.net core Приложение запускается с другим портом с Electron.net с кросс-платформенным
Я разработал приложение с использованием.NET Core и Electron.NET и создал форму входа.
Для входа в систему я создал отдельный web API
проект и вызвать API входа по нажатию кнопки входа.
Когда я вызываю API из приложения, он выдает ошибку о "Cross-Origin", поэтому мне нужно зарегистрировать IP-адрес и порт в этом API, но сейчас я сталкиваюсь с такой проблемой, как .net core
Приложение запускается каждый раз на другом порту.
Хотя вход в API из оконной среды дает мне порт ниже:8001
При вызове того же API из Ubuntu он дает мне порт 35941. Так что теперь я сталкиваюсь с такой проблемой, как, у нас есть другой проект для веб-API, и он позволяет нам вызывать веб-API на конкретном порту, но из-за каждого разного порта, генерируемого Electron.net, мы не можем вызвать веб-API в CORS (перекрестное происхождение) и выдает ошибку.
Как я могу отказаться от этой ситуации?
2 ответа
Начиная с версии 5.22.14 Electron.NET - можно ли определить отдельный порт в файле electronic.manifest.json.
Пример файла манифеста: https://github.com/ElectronNET/Electron.NET/blob/master/ElectronNET.WebApp/electron.manifest.json
Добавьте сюда следующую запись:
"aspCoreBackendPort": 8080
Самое быстрое решение - установить переменную среды со статическим портом (ASPNETCORE_URLS=http://+:3333
) определено до запуска dotnet. Отличный пакет узлов для установки переменных ENV кросс-платформенный cross-env
- https://www.npmjs.com/package/cross-env
Это может быть первым из многих параметров запуска, которые вы хотите изменить. Вы должны настоятельно рассмотреть возможность создания launchsettings.json
файл с этими конфигурациями. https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.1
Есть статический класс BridgeSettings
в Electron.NET, который дает вам настройки порта, чтобы вы могли использовать его для установки порта в настройках CORS. Например:
app.UseCors((builder) => builder.WithOrigins($"http://localhost:{BridgeSettings.WebPort}"));