Kestrel/IIS主机与ASP.Net Core 2.2/3.0应用程序切换



是否有一种方法可以编译/构建我们的应用程序一次,但能够部署到IIS(使用进程内托管模型(或使用Kestrel独立运行

这是一个应用程序,在某些情况下可能是云托管的(Azure(,但也可以独立打包和安装,本质上是内联网场景中基于桌面的应用程序服务网页。

目前,证书文件和密码加载在IWebHostBuilder实现中:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddSingleton<ConfigurationContainer>(ConfigurationContainer);
})                
.UseKestrel(options =>
{
options.ConfigureEndpointDefaults(listenOptions =>
{                        
if (_useHttps)                        
listenOptions.UseHttps(_certificateFile, _certificatePword);                        
});
})
.UseUrls("xxxxx")
.UseStartup<Startup>();

目标如上所述-能够使用(进程内托管(在IIS中托管相同的构建,或者使用Kestrel独立运行。

理论上,dll在两者中的作用相同。因为您选择在C#中配置Kestrel选项,所以您可能会在IIS中遇到有趣的场景。尝试在appsettings.json:中配置Kestrel和URL

"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:5555"
}}}

然后在IIS中,使用IIS配置这些详细信息。

另请参阅https://stackoverflow.com/a/52077756/702931

最新更新