为什么我会在带有SSL的Visual Studio中运行nopCommerce 4的ERR_EMPTY_RESPONSE?

时间:2018-10-16 15:44:37

标签: c# asp.net-core nopcommerce kestrel-http-server

当我尝试在带有SSL的Visual Studio中本地运行nopCommerce 4.0时,出现错误ERR_EMPTY_RESPONSE。在没有HTTPS的情况下运行正常。我正在测试与外部登录的集成,并且需要在本地运行HTTPS以避免混合内容问题。

我知道有几则关于SO的帖子,但它们都将我带到了同一个地方。我最近的尝试是基于this article

在我的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);
}

在certificate.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();
}

我在Nop.Web项目设置中将ASPNETCORE_HTTPS_PORT设置为55391。

运行此命令时,出现错误ERR_EMPTY_RESPONSE

如果我删除所有HTTPS选项并仅使用标准设置,则一切正常。

编辑:我必须使用Nop.Web配置文件运行该项目,所以我不能使用IIS Express运行它,而只能在项目属性中获取SSL设置。

编辑#2:我注意到当我收到此错误时,浏览器从https://localhost:55391重定向到http://localhost:55391(否)。我不确定为什么。

0 个答案:

没有答案