![](/img/trans.png)
[英]Difference between UseHttpsRedirection and AddDirectToHttpsPermanent in ASP.NET Core
[英]Asp.net core 2.1 UseHttpsRedirection not working in IIS
我将我的 asp.net core 2.1 WebApi 部署到 IIS 10。(IIS 作为代理工作)
我在 IIS 中添加了 SSL 证书,并为不安全端口 (8081) 和安全端口 (8082) 添加了绑定。
但是当我访问http://localhost:8081/api/values 时,浏览器只会返回 403 Forbidden,而不是将我重定向到https://localhost:8082/api/values 。
我的启动代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddHttpsRedirection(options=>
{
options.HttpsPort = 8082;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//app.UseForwardedHeaders();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
我发现的问题是从 .net core 2.0 更改为 .net core 2.1 意味着需要在 startup.cs 中明确指定 https 端口
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
有关更多信息,请参见此处: https : //github.com/aspnet/AspNetCore/issues/3176
就我而言,错误在于我以不受支持的顺序调用事物。 通过重新排列我的代码以首先调用:
app.UserHttpsRedirection()
然后打电话
app.UseHsts()
它开始起作用,而不是相反。
您收到此状态代码是因为您在 SSL 设置中选择了需要 SSL。
如果您想使用您的代码重定向到 https,请取消选中此选项。
但首先你应该仔细阅读文档: 在 ASP.NET Core 中强制执行 HTTPS
不要在接收敏感信息的 Web API 上使用 RequireHttpsAttribute。 RequireHttpsAttribute 使用 HTTP 状态代码将浏览器从 HTTP 重定向到 HTTPS。 API 客户端可能不理解或不遵守从 HTTP 到 HTTPS 的重定向。 此类客户端可以通过 HTTP 发送信息。 Web API 应该:
- 不监听 HTTP。
- 关闭状态码为 400(错误请求)的连接并且不提供请求。
在我的 startup.cs 我做了这个设置
public void ConfigureServices(IServiceCollection services)
{
try
{
//..other codes
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
}
catch (Exception ex)
{
string innerMessage = "";
if (ex.InnerException != null)
innerMessage = ex.InnerException.Message;
Log.Logger.Error("ConfigureServices Message: " + ex.Message + " inner Message:" + innerMessage + "Env.Name:" + _env.EnvironmentName);
}
}
在配置方法中,我是这样使用的
app.UseHttpsRedirection();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.