Настроить launchSettings.json для SSL в отладке - Код ядра Core/Visual Studio ASP.NET

Я следую этому учебнику, чтобы добавить аутентификацию Facebook в мое веб-приложение.

Как часть процесса, я пытаюсь включить SSL в свой проект, но все, что я нашел, связано с обновлением параметра в диалоговом окне "Свойства проекта" в Visual Studio, которое недоступно мне с помощью кода Visual Studio на моем Mac. Я попытался обновить значения в файле launchSettings.json вручную, но мне не повезло.

Как обновить launchSettings.json(или другие файлы проекта) в коде Visual Studio, чтобы включить SSL во время отладки?

Ответ 1

Я сделал следующие правки для запуска Settings.json на окнах, и он добился цели. В настоящее время это единственный способ сделать это в Visual Studio 2017 RC.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:50183/",
      "sslPort": 44318
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "https://localhost:44318",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "corePostgresIdentity": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:44318"
    }
  }
}

Ответ 2

Когда вы запускаете приложение ASP.NET Core в VS Code, вы запускаете его с Kestrel, а не IIS. Вам необходимо настроить Kestrel для включения SSL вручную, как показано ниже (в Program.cs):

public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseKestrel(options =>
            {
                options.Listen(IPAddress.Loopback, 5000, listenOptions =>
                {
                    listenOptions.UseHttps("localhost.pfx", "yourPassword");
                });
            })
            .UseUrls("https://localhost:5000")
            .Build();

Как создать самозаверяющий сертификат описано в этой замечательной статье.

Ответ 3

Обычно, когда вы изменяете свойства для своего проекта, изменения сохраняются в launchSettings.json. Поэтому вам нужно изменить launchSettings.json, как показано ниже:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:8837/",
      "sslPort": 0 //Add ssl port here
    }
  },
 "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "https://localhost:8837",
      "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
     }
},

Ответ 4

Если вы не хотите изменять свой файл Program.cs только для отладки в VS Code, вы также можете настроить URL-адреса в файле launch.json. Вам необходимо указать URL в свойстве env. Как сказал xneg, для этого вам нужно создать самоподписанный сертификат.

Вы можете настроить URL-адрес http и https (SSL)

"configurations":[
    {
        ...
        "env": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "ASPNETCORE_URLS": "http://localhost:5002;https://localhost:5003"
        },
        ...
    }

Документация для Kestrel помогла выяснить это.