#asp.net #ubuntu #.net-core
#asp.net #ubuntu #.net-ядро
Вопрос:
У меня есть приложение Asp core dotnet. Приложение работает правильно, и я пытаюсь опубликовать его в Ubuntu.
У меня есть .Net установлен в Ubuntu.
Вот файл конфигурации для моего приложения (файл LaunchSettings.json) :
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49855",
"sslPort": 44315
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:6001;http://localhost:6000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
В принципе, я хочу, чтобы мое приложение работало на портах 6000/6001
Я успешно скопировал приложение на сервер, но когда я запускаю dotnet MyApp.dll , Я получаю сообщение об ошибке:
Невозможно запустить Kestrel. System.IO.IOException: не удалось привязать к адресу http://127.0.0.1:5000 : адрес уже используется.
Я проверил, какой процесс запущен на порту 5000 ( fuser 5000/tcp
затем с помощью команд ps -p PID -o comm=
). Я получаю dotnet в качестве процесса, используя порт 5000. Я убил его и снова запустил команду dotnet MyApp.dll
, но получаю ту же ошибку.
Есть ли какой-нибудь способ решить эту проблему, пожалуйста? т. Е. Либо заставить приложение запускаться с другого порта, либо заставить dotnet использовать другой порт?
Ответ №1:
в asp.net ядро вы можете использовать 3 способа
первый способ, используйте --urls=[url]
опцию для запуска dotnet, например :
dotnet run --urls="http://localhost:6000/;https://localhost:6001/"
или
dotnet MyApp.dll --urls="http://localhost:6000/;https://localhost:6001/"
второй способ, добавить Urls
в appsettings.json
или appsettings.Development.json
, например:
{
"Urls": "http://localhost:6000;https://localhost:6001"
}
третий способ, используя UseUrls()
in Program class
и add configure ConfigureWebHostDefaults
, например:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://localhost:6000;https://localhost:6001");
});
}