Как опубликовать простое приложение Dotnet в Ubuntu?

#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");
                });
    }