πŸš€ Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ хост/ΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² прилоТСниях .NET Core

by itisgood

Π’ быстро Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌΡΡ Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚Π΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ .NET Core выдСляСтся своСй ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ эффСктивно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ соврСмСнныС кроссплатформСнныС прилоТСния.

ΠžΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ аспСктом развСртывания Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ являСтся настройка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² сСрвСра, Π² частности хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ этом ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌ руководствС Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ настройки этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², благодаря ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ваши прилоТСния .NET Core Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ ΠΈ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°Π΄ΡƒΠΌΠ°Π»ΠΈ.

ПониманиС основ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ .NET ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ настроСны Π½Π° запуск Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP-адрСс.

Π­Ρ‚ΠΈ настройки подходят для Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… этапов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½ΠΎ Π² производствСнных сцСнариях ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ особыС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ – ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² бСзопасности Π΄ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ соотвСтствия.

ИзмСнСниС хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ хост ΠΈ ΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ .NET core, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· 4 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ способов:

ΠœΠ΅Ρ‚ΠΎΠ΄ 1: ИспользованиС Ρ„Π°ΠΉΠ»Π° launchSettings.json

Π€Π°ΠΉΠ» launchSettings.json – это ваш ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π² настройкС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

РасполоТСнный Π² ΠΏΠ°ΠΏΠΊΠ΅ Properties, ΠΎΠ½ позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ настройки для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… срСд, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Development, Staging ΠΈ Production.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:54321/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "YourProjectName": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

ИзмСнив свойство applicationUrl Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ URL.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ конфигурация

Для большСго контроля, особСнно Π² производствС, настраивайтС хост ΠΈ ΠΏΠΎΡ€Ρ‚ нСпосрСдствСнно Π² Ρ„Π°ΠΉΠ»Π΅ Program.cs ΠΈΠ»ΠΈ Startup.cs, Π² зависимости ΠΎΡ‚ настроСк вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

.NET Core 3.1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ранняя вСрсия:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup()
        .UseUrls("http://0.0.0.0:5000"); // Set custom host and portY
.NET 5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ поздняя вСрсия:
Π’ .NET 5 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… вСрсиях появился WebApplicationBuilder, измСнивший способ конфигурирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Listen(System.Net.IPAddress.Any, 5000); // Listen on all network interfaces on port 5000
});

var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния

Установка ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния ASPNETCORE_URLS – это эффСктивный способ опрСдСлСния URL-адрСсов, особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Π² срСдах Dockerized.
export ASPNETCORE_URLS="http://*:5000"
Π­Ρ‚Π° конфигурация прСдписываСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ 5000 Π½Π° всСх IP-адрСсах.

ΠœΠ΅Ρ‚ΠΎΠ΄ 4: ИспользованиС Ρ„Π°ΠΉΠ»Π° appsettings.json

Для Π±ΠΎΠ»Π΅Π΅ постоянного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ измСнСния ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, рассмотритС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования Ρ„Π°ΠΉΠ»Π° appsettings.json.
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ URL нСпосрСдствСнно Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ вашСго прилоТСния.
{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://0.0.0.0:8000"
      },
      "Https": {
        "Url": "https://0.0.0.0:8001"
      }
    }
  }
}
Π’ этой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСру Kestrel явно прСдписано ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ HTTP ΠΈ HTTPS с настраиваСмыми ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ ΠΈ IP-адрСсами.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ Π»Π΅Π³ΠΊΠΎ настраиваСтся Π±Π΅Π· внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² исходный ΠΊΠΎΠ΄ прилоТСния.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² прилоТСниях .NET Core обСспСчиваСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для удовлСтворСния спСцифичСских Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΡ… срСд развСртывания.
Π‘ΡƒΠ΄ΡŒ Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» launchSettings.json для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ настройку, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» appsettings.json для Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΡ… настроСк прилоТСния, .NET Core ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ряд возмоТностСй для обСспСчСния доступности ΠΈ бСзопасности Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… вашим ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ потрСбностям.
см. Ρ‚Π°ΠΊΠΆΠ΅:

Loading

You may also like

Leave a Comment