在启动和运行ASP.NET Core 2.1 Web应用程序时遇到很多问题。我需要它在共享端口(80或443)上的http.sys(WebListener)下运行。我还希望它自动从http(80)重定向到https(443)。当然,我不想对http.sys的侦听器地址进行硬编码-我需要从配置文件中提取这些地址,但是现在它们已经被硬编码。我使用netsh
保留了适当的URL,但是当我运行该应用程序时,我得到一个警告:
warn: Microsoft.AspNetCore.Server.HttpSys.MessagePump[0]
Overriding address(es) 'http://sharedhost.vbcoa.com:80/app/, https://sharedhost.vbcoa.com:443/app/'. Binding to endpoints added to UrlPrefixes instead.
该应用程序启动,但是我根本无法使用Microsoft Edge浏览到该应用程序。任何其他Web浏览器都可以-只要我禁用HTTPS。由于某种原因,该应用程序将转发到端口5001,而不是443。
答案 0 :(得分:3)
我想通了所有这些。有四个问题。我会分别给他们讲。
UseHttpSys
的{{1}}扩展方法接受带有IWebHostBuilder
属性的options参数。但是,即使您使用的是http.sys,也不应在此处配置URL。您可以使用UrlPrefixes
的{{1}}扩展方法对它们进行硬编码,但是最好将其从配置中拉出,这会导致第二个问题:
要指定要在其上运行应用程序的URL,请按如下所示将它们添加到UseUrls
中的“ urls”元素中:
IWebHostBuilder
然后,您需要创建一个appsettings.json
对象,向其中添加{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"urls": "http://sharedhost.vbcoa.com:80/app/;https://sharedhost.vbcoa.com:443/app/"
}
文件,构建配置(使用ConfigurationBuilder
方法),并告诉appsettings.json
使用Build
扩展方法使用该配置:
IWebHostBuilder
在UseConfiguration
的{{1}}方法中指定了HTTPS重定向-该功能是现成的。但是,默认情况下,即使您从上面的绑定URL中指定了另一个端口,它也将转发到端口5001。要覆盖它,您需要通过服务注入HTTPS重定向选项。这是在public static void Main(string[] args)
{
var configBuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var hostBuilder = WebHost.CreateDefaultBuilder(args)
.UseConfiguration(configBuilder.Build())
.UseHttpSys()
.UseStartup<Startup>();
hostBuilder.Build().Run();
}
的{{1}}方法中处理的。将以下行添加到该方法:
Configure
这是Windows Store应用程序中的本地主机回送隔离的问题。似乎会影响Windows 10企业版,如此处所述:Microsoft Edge is not able to recognize localhost。要更正它,您需要做两件事:
以管理员身份启动命令提示符或Powershell提示符,然后输入以下内容:
Startup
应该这样做!