Cha*_*lie 8 c# iis asp.net-core
我将asp.net core 2.1 WebApi部署到IIS10。(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();
}
Run Code Online (Sandbox Code Playgroud)
Cal*_*nus 10
我发现的问题是,从.net core 2.0更改为.net core 2.1意味着需要在startup.cs中显式指定https端口
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获取更多信息:https : //github.com/aspnet/AspNetCore/issues/3176
就我而言,错误在于我以不受支持的顺序调用事物。通过重新排列我的代码以首先调用:
app.UserHttpsRedirection()
Run Code Online (Sandbox Code Playgroud)
然后打电话
app.UseHsts()
Run Code Online (Sandbox Code Playgroud)
它开始起作用,而不是相反。
您收到此状态代码是因为您在 SSL 设置中选择了“需要 SSL”。
如果您想使用代码重定向到 https,请取消选中此选项。
但首先您应该仔细阅读文档:Enforce HTTPS in ASP.NET Core
不要在接收敏感信息的 Web API 上使用 RequireHttpsAttribute。RequireHttpsAttribute 使用 HTTP 状态代码将浏览器从 HTTP 重定向到 HTTPS。API 客户端可能无法理解或服从从 HTTP 到 HTTPS 的重定向。此类客户端可以通过 HTTP 发送信息。Web API 应该:
- 不监听 HTTP。
- 关闭状态代码 400(错误请求)的连接,并且不处理该请求。
归档时间: |
|
查看次数: |
3139 次 |
最近记录: |