当我尝试在带有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(否)。我不确定为什么。