C# ASP.Net核心HTTP请求永远不会到达我的API,也不会重定向到HTTPS
当我使用HTTP URL调用我的asp.net核心API时,请求永远不会到达我的应用程序,我添加了一个中间件来测试这一点,并且请求永远不会到达上下文。虽然我已经配置了https重定向,如下所示,但没有Http请求重定向到https。 但当我使用HTTPS URL时,请求现在会命中我的应用程序。 我希望能够从Http URL调用我的API,然后它重定向到https 我在网上看到的一切我都试过了。 我尝试启用HTTPS重定向,但没有任何效果。 以下是https重定向的外观:C# ASP.Net核心HTTP请求永远不会到达我的API,也不会重定向到HTTPS,c#,asp.net,asp.net-core,asp.net-core-webapi,C#,Asp.net,Asp.net Core,Asp.net Core Webapi,当我使用HTTP URL调用我的asp.net核心API时,请求永远不会到达我的应用程序,我添加了一个中间件来测试这一点,并且请求永远不会到达上下文。虽然我已经配置了https重定向,如下所示,但没有Http请求重定向到https。 但当我使用HTTPS URL时,请求现在会命中我的应用程序。 我希望能够从Http URL调用我的API,然后它重定向到https 我在网上看到的一切我都试过了。 我尝试启用HTTPS重定向,但没有任何效果。 以下是https重定向的外观: public void
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
else {
app.ConfigureExceptionMiddleware();
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc();
}
在configureServices方法中:
services.AddHttpsRedirection(options => {
options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
options.HttpsPort = 44382;
});
launchSettings.json
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53471",
"sslPort": 44382
}
},
代码不起作用,也不启用重定向。它只允许我通过HTTPS访问我的应用程序,但未完成重定向。
有人能告诉我如何调用Http重定向到https吗?导致此问题的原因是我的Launch settings.json中有两个配置文件,并且我选择了错误的配置文件来启动应用程序。
选择属性为“commandName”的配置文件(在项目设置中):“project”解决了此问题。我的回答中的评论引导我找到了解决这个问题的正确途径。我认为您缺少HTTPS端口,因此您的应用程序应该记录错误消息
“无法确定用于重定向的HTTPS端口。”
您可以使用以下方法之一配置端口
- 设置
httpsreditionoptions.HttpsPort
- 设置
环境变量(重新启动计算机以反映更改)ASPNETCORE\u HTTPS\u端口
- 您可以在appsettings.json文件中配置
端口 e、 g:https\u端口
- 在launchsettings.json中设置HTTPS URL
我希望这些方法之一可以解决您的问题 你的launchsettings.json中有其他配置文件吗?@John Code你提到过这个-
https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-3.0&tabs=visual studio
。它说,在开发中,在launchsettings.json中设置HTTPS URL。使用IIS Express时启用HTTPS。谢谢各位,你们引导我走上了正确的道路。我有2个配置文件,选择属性为“commandName”的配置文件(在项目设置中):“project”解决了此问题
{
"https_port": 443
}