widows部署.NET Core 3.1項目到IIS問題


  最近在部署.net core 3.1的項目到iis,遇到了一些問題,找了很多資料,然后通過一一實踐,也就 順利完成了部署。也因此總結記錄下來,希望可以幫助到更多的人。

  感謝文獻參考:Windows平台部署 Asp.Net Core 3.1.0,將 ASP.NET Core 應用發布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

  1.首先安裝SDK(我安裝的是:dotnet-sdk-3.1.100-win-x64.exe)地址:https://dotnet.microsoft.com/download

  2.安裝.NET Core Hosting Bundle(我安裝的版本是:dotnet-hosting-3.1.2-win.exe) 地址:https://dotnet.microsoft.com/download/dotnet-core/3.1

  3.部署iis,綁定IP端口號,修改應用程序池托管方式

  

 

 

 

  4.運行程序發生錯誤

  a . HTTP Error 500.30 - ANCM In-Process Start Failure

  b. System.InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.

  c. Application '/LM/W3SVC/11/ROOT' with physical root 'D:\測試\XXXXXX-01\' hit unexpected managed exception, exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs

  d.  System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.

 

 

 

 

 

 

 

 

  5.解決方式

   4-a. HTTP Error 500.30 - ANCM In-Process Start Failure

    解決方式:

        ①.停止iis  ,打開:C:\Windows\System32\inetsrv\config\applicationHost.config ,搜索節點AspNetCoreModuleV2 

          ②.修改節點指定加載模式  preCondition="bitness64"

<add name="AspNetCoreModuleV2" image="%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll" preCondition="bitness64" />

<add name="AspNetCoreModuleV2" preCondition="bitness64" />

 

          

   4- b. System.InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.

      4- c.  Application '/LM/W3SVC/11/ROOT' with physical root 'D:\測試\XXXXXX-01\' hit unexpected managed exception, exception code = '0xe0434352'. First 30KB characters of captured stdout and stderr logs:

    解決方式:在program.cs中刪除:webBuilder.UseKestrel();

    

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    //webBuilder.UseKestrel();
                })


    }

  4-d .System.InvalidOperationException: Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.

  解決方式:在startup.cs 中的ConfigureServices方法加入以下代碼

  

public void ConfigureServices(IServiceCollection services)
{
    // If using Kestrel:
    services.Configure<KestrelServerOptions>(options =>
    {
        options.AllowSynchronousIO = true;
    });

    // If using IIS:
    services.Configure<IISServerOptions>(options =>
    {
        options.AllowSynchronousIO = true;
    });
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM