我想通了这一切。有四个问题。我将逐一介绍它们。
- 配置 http.sys 时,会发出关于覆盖本地 URL 的警告
IWebHostBuilder 的 UseHttpSys 扩展方法接受带有 UrlPrefixes 属性的选项参数。但是,这不是您应该配置 URL 的地方 - 即使您使用的是 http.sys。可以用IWebHostBuilder的UseUrls扩展方法硬编码,但最好从配置中拉出来,这就引出了第二个问题:
要指定要在哪些 URL 上运行应用程序,请将它们添加到 appsettings.json 中的“urls”元素中,如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"urls": "http://sharedhost.vbcoa.com:80/app/;https://sharedhost.vbcoa.com:443/app/"
}
然后您需要创建一个ConfigurationBuilder 对象,将appsettings.json 文件添加到其中,构建配置(使用Build 方法)并告诉IWebHostBuilder 使用该配置,使用@987654333 @扩展方法:
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();
}
HTTPS 重定向在 Startup 的 Configure 方法中指定 - 该功能开箱即用。但是,默认情况下,它将转发到端口 5001,即使您在上面的绑定 URL 中指定了另一个端口。要覆盖它,您需要通过服务注入 HTTPS 重定向选项。这是在Startup 的ConfigureServices 方法中处理的。将以下行添加到该方法:
services.AddHttpsRedirection(options => { options.HttpsPort = 443; });
- Microsoft Edge 不会显示 Web 应用,即使其他所有浏览器都会显示
这是 Windows 应用商店应用程序中 localhost 环回隔离的问题。它似乎会影响 Windows 10 企业版,如下所述:Microsoft Edge is not able to recognize localhost。要纠正它,您需要做两件事:
- 确保在 Edge 的“about:flags”页面中选中“Allow localhost loopback”。
-
以管理员身份启动命令提示符或 Powershell 提示符并输入以下内容:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
应该这样做!