Https 如何在ASP.NET Core 2.1+;红隼?
因此,随着ASP.NET Core 2.1的出现,Kestrel现在会自动在HTTP端点旁边创建一个HTTPS端点,并设置默认项目模板以从HTTP重定向到HTTPS(这很容易撤销) 然而我的问题是。。。如何为我的项目完全禁用HTTPS。我已经阅读了这些文档,并使用了各种HTTPS配置设置,但我所做的一切似乎都不允许我关闭它,而只是运行一个HTTP项目Https 如何在ASP.NET Core 2.1+;红隼?,https,kestrel-http-server,asp.net-core-2.1,Https,Kestrel Http Server,Asp.net Core 2.1,因此,随着ASP.NET Core 2.1的出现,Kestrel现在会自动在HTTP端点旁边创建一个HTTPS端点,并设置默认项目模板以从HTTP重定向到HTTPS(这很容易撤销) 然而我的问题是。。。如何为我的项目完全禁用HTTPS。我已经阅读了这些文档,并使用了各种HTTPS配置设置,但我所做的一切似乎都不允许我关闭它,而只是运行一个HTTP项目 我是疯了还是错过了什么。我希望这非常容易做到。如果您使用的是Visual Studio 2017,那么您可以执行以下操作: WebHost.Cre
我是疯了还是错过了什么。我希望这非常容易做到。如果您使用的是Visual Studio 2017,那么您可以执行以下操作:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
app.UseHttpsRedirection();
这将更新launchSettings.json文件中的iisExpress设置。在Startup.cs中,删除中间件
app.UseHttpsRedirection();
事实证明,实现我想要做的事情的正确方法是使用.UseKestrel()专门配置Kestrel,只需指定一个地址,如下所示:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
})
.UseStartup<Startup>();
如果指定了第二个地址,则将假定该地址由内置的开发者证书保护,如下所示:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => {
options.Listen(IPAddress.Loopback, 5080); //HTTP port
options.Listen(IPAddress.Loopback, 5443); //HTTPS port
})
.UseStartup<Startup>();
WebHost.CreateDefaultBuilder(args)
.UseKestrel(选项=>{
options.Listen(IPAddress.Loopback,5080);//HTTP端口
options.Listen(IPAddress.Loopback,5443);//HTTPS端口
})
.UseStartup();
当然,您可以按照以下说明专门保护您的SSL地址:
这是生产设置所必需的。在项目的文件
Properties/launchSettings.json
中,查看键applicationUrl
。您会发现类似于:
...
"applicationUrl": "https://localhost:5001;http://localhost:5000",
...
删除https
端点,就完成了
编辑
如@Xorcist所述,文件launchSettings.json
未发布。因此,上述解决方案只能在开发环境中工作。要在生产和开发中禁用https,并且通常要配置要侦听的URL,您还可以执行以下操作之一:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
app.UseHttpsRedirection();
- 使用
参数运行--url
,将与dotnet
中的launchSettings.json
具有相同的效果。例如:applicationUrl
。同样,删除你不想使用的dotnet运行--url=http://0.0.0.0:5000,https://0.0.0.0:5001
- 使用
environment变量也可以实现同样的效果ASPNETCORE\u url
- 正如@Konstantin to在回答中提到的,在ASP Net Core 2.1中,您还可以在
中配置Kestrel端点(这似乎在2.0中无法实现)appsettings.json
- 最后,使用扩展方法
。我更喜欢另一种解决方案,因为这种解决方案硬编码您是应用程序端点,并且在不重新编译应用程序的情况下无法更改WebHost.CreateDefaultBuilder(args).useUrls(“http://0.0.0.0:5000)
更新(2021年5月19日):除了appsettings one之外,这些选项都是可用的。也许它仍然有效,但我不确定。在Program.cs中,添加UseURL,如下所示:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000")
.UseStartup<Startup>();
app.UseHttpsRedirection();
dotnet
CLI现在有一个用于此的模板
dotnet new webapi --no-https
使用ASPNETCore2.2,我只需将web服务器URL设置为http而不是https,它就可以自己获取它。我将其作为自托管进程运行
用于开发和非生产:
在项目属性中禁用启用SSL在我的VS2017中,该选项不存在。因此:项目属性=>调试=>应用程序URL(删除s)并设置正确的起始页=>保存(出现覆盖启动设置的弹出窗口=>确定并准备启动(f5)我自己使用的是.NET Core CLI。在我的*.csproj或appsettings.json中没有任何东西表明应该使用SSL。根据最新消息,当存在本地开发证书时,ASP.NET将自动创建SSL终结点。因此我假设代码中有一种方法可以禁用它,但到目前为止我找不到任何方法。我认为这是正确的如果它不依赖visual studio,答案会更好。launchSettings.json文件会怎么样?这是非常没有帮助的。问题是关于asp核心和kestrel的,你的答案是关于windows上的遗留dotnet。同样的技术在VS-2019中也能很好地工作。非常感谢你的解决方案,Abhishek。仅此而已防止强制HTTP->HTTPS重定向(允许您不安全地访问站点),但不会禁用HTTPS。Kestrel仍在使用两个端口(HTTP通常为5000,HTTPS为5001)。我要找的只是HTTP,根本没有HTTPS。这对我很有帮助。我使用的是Android仿真器,当然它很可能不接受自签名SSL。因此,我尝试连接到HTTP地址,但我一直得到“307临时重定向”.经过一点研究,我认为这是因为服务器重定向到HTTPS。删除该行解决了它。即使这没有禁用HTTPS,这仍然是非常有用的信息。我也遇到了307临时重定向问题,这解决了它。是的,这是一个很好的答案实际上,使用.UseUrls()和或.UseConfiguration(),并指定了JSON配置和“URL”属性。当只提供一个地址时,这两个属性的工作方式相同。我被要求为我的上述评论添加一个示例,因此它是:hosting.JSON