Почему я получаю ERR_EMPTY_RESPONSE с запущенным nopCommerce 4 в Visual Studio с SSL? - PullRequest
0 голосов
/ 16 октября 2018

Когда я пытаюсь запустить nopCommerce 4.0 локально в VisualStudio с SSL, я получаю ошибку ERR_EMPTY_RESPONSE.Запуск без HTTPS работает нормально.Я тестирую интеграцию с внешним логином, и мне нужно запустить HTTPS локально, чтобы избежать проблем со смешанным контентом.

Я знаю, что есть несколько SO-сообщений об этом, но все они ведут меня в одно и то же место.Моя последняя попытка основана на этой статье .

В моем файле Startup.cs у меня есть:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    services.AddMvc(
        options =>
        {
            options.SslPort = 55391;
            options.Filters.Add(new RequireHttpsAttribute());
        }
    );
    services.AddAntiforgery(
        options =>
        {
            options.Cookie.Name = "_af";
            options.Cookie.HttpOnly = true;
            options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
            options.HeaderName = "X-XSRF-TOKEN";
        }
    );
    return services.ConfigureApplicationServices(Configuration);
}

В сертификате.json у меня есть:

{
    "certificateSettings": {
        "filename": "localhost.pfx",
        "password": "secretpassword"
    }  
}

В Program.cs у меня есть:

public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddEnvironmentVariables()
    .AddJsonFile("certificate.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"certificate.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true)
    .Build();

    var certificateSettings = config.GetSection("certificateSettings");
    string certificateFileName = certificateSettings.GetValue<string>("filename");
    string certificatePassword = certificateSettings.GetValue<string>("password");

    var certificate = new X509Certificate2(certificateFileName, certificatePassword);

    var host = WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options =>
        {
            options.AddServerHeader = false;
            options.Listen(IPAddress.Loopback, 55391, listenOptions =>
            {
                listenOptions.UseHttps(certificate);
            });
            options.Listen(IPAddress.Loopback, 55390);
        })
        .UseStartup<Startup>()
        .CaptureStartupErrors(true)
        .Build();

    host.Run();
}

У меня ASPNETCORE_HTTPS_PORT установлено в 55391 в настройках моего проекта Nop.Web.

При запуске я получаю ошибку ERR_EMPTY_RESPONSE.

ЕслиЯ удаляю все параметры HTTPS и просто иду со стандартной настройкой, все работает отлично.

Редактировать: мне нужно запустить этот проект с профилем Nop.Web, поэтому я не могу запустить его с IIS Express и просто получить настройки SSL в свойствах проекта.

Редактировать # 2: Я заметил, что когда я получаю эту ошибку, браузер перенаправляется с https://localhost:55391 на http://localhost:55391 (нет).Я не уверен почему.

...