代码之家  ›  专栏  ›  技术社区  ›  Eugen

IIS内的主机重新启动

  •  2
  • Eugen  · 技术社区  · 7 年前

    我有一个相当简单的.NET WebApi应用程序,我试图在IIS中托管它。遵循微软网站的所有指示。 这是它的启动方法。

        public static void Main(string[] args)
        {
            var host = WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
    
            host.Run();
        }
    

    我将应用程序池配置为不使用任何托管代码,但在日志中仍出现此错误

    Application startup exception: System.InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.
       at Microsoft.AspNetCore.Server.IIS.Core.IISServerSetupFilter.<>c__DisplayClass2_0.<Configure>b__0(IApplicationBuilder app)
       at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
       at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
    crit: Microsoft.AspNetCore.Hosting.Internal.WebHost[6]
    

    我不知道会出什么事。 有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  8
  •   Edward    7 年前

    为了 InProcess ,它使用 IISHttpServer .

    enter image description here

    UseKestrel() 使用 out-of-process .

    enter image description here

    对于解决方案,请移除 .UseKestrel() 行。

    public static void Main(string[] args)
    {
        var host = WebHost.CreateDefaultBuilder(args)
                    //.UseKestrel()
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseIISIntegration()
                    .UseStartup<Startup>()
                    .Build();
        host.Run();
    }
    

    有关详细信息,请参阅 ASP.NET Core Module

        2
  •  0
  •   Recep Duman    6 年前

    我想用 UseKestrel() . 当我创建.net core 2.0或2.1项目时。我可以用 使用树() 但是如果我创建.net core 2.2项目,我就不能使用

    我就这样解决了这个问题

    • 创建新的.net core 2.0或2.1项目。然后,您可以将.net core项目升级到2.2。它会起作用的。

    但这不是有效的解决办法。