【问题标题】:Kestrel / IIS hosting toggling with ASP.Net Core 2.2 / 3.0 applicationKestrel / IIS 托管与 ASP.Net Core 2.2 / 3.0 应用程序切换
【发布时间】:2020-07-05 09:39:57
【问题描述】:

有没有办法编译/构建我们的应用程序一次,但能够部署到 IIS(使用 进程内 托管模型) 使用 Kestrel 独立运行?

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

目前在 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 独立运行。

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

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

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

    然后在 IIS 中,使用 IIS 来配置这些细节。

    另见https://stackoverflow.com/a/52077756/702931

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2017-07-19
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多