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