IIS 發布 .net core 3.1


官方文檔地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio

第一部分:本教程介紹如何在 IIS 服務器上托管 ASP.NET Core 應用。

1.服務器裝aspnetcore-runtime-3.1.1-win-x64.exe

下載鏈接:https://dotnet.microsoft.com/download/dotnet-core/3.1

 

 

2.服務器裝dotnet-hosting-3.1.1-win.exe

注意:安裝dotnet-hosting-3.1.1-win.exe可能導致所有的應用程序池都停止了,手動起來也會自定停止,這個時候不要慌,把dotnet-hosting-3.1.1-win.exe卸載了,再安裝vc_redist.x64.exe,下載鏈接:https://www.microsoft.com/en-us/download/details.aspx?id=48145

 

 

 然后再裝dotnet-hosting-3.1.1-win.exe就ok了

 

安裝IIS和Windows Server Hosing之后 ,重啟IIS服務,檢查IIS"模塊"中是否有 “AspNetCoreModule2”

 
 

 

 

 

3.發布項目,將發布生成的文件拷貝到IIS網站對應的文件夾

 

第二部分:關於發布、部署到iis的一些配置:

      1. 關於visual studio 2019發布.net core 3.0時一些配置

      發布-步驟1:選取發布目標:選擇文件夾,然后點擊高級: 

         

      發布-步驟2:目標框架:netcoreapp3.0, 部署模式:框架依賴,目標運行時:選擇可移植。然后保存。     

           

     注意: 這里要重點說明:這里的目標運行時:win-x64或者win-x86 是你第一步,安裝.net core sdk的運行時版本。並不是你操作系統的版本

   我們在第一部介紹時,就直接選擇的是64位按照包,所以這個文章所有截圖中都是選擇64位運行時版本。

     

 

     發布-步驟3:點擊發布按鈕,生成文件。如果點擊exe,可以看到控制台相關信息,說明發布沒有問題。

發布后查看

   2.部署到iis 。

          建議查看官方文檔:將 ASP.NET Core 應用發布到 IIS ,https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio。

          這里截圖列一下我的關鍵配置:

          1.應用程序池,選擇無托管模式。我電腦是64位,選擇“啟用32位應用程序”為“false”。

            

      iis進程高級選項中,修改進程模塊的“標識”,使用有管理員角色的賬號登錄。如果不使用管理員權限賬號,我這里會報500.0 - ANCM In-Process Handler Load Failure。所以一定要改。可以設置成LocalSystem

            

       2.權限配置:選擇【網站】》選中【要更改的網站】,點擊【基本設置】,彈出如下對話框。點擊【連接為】,路徑憑據中選擇【特定用戶】,點設置,輸入管理員賬號和密碼。

            

  第三部分:使用 IIS 在 Windows 上托管 ASP.NET Core  問題處理:

官方文檔 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-3.1#iis-configuration

常見的異常處理方式:

1.500錯誤。

HTTP Error 500.0 - ANCM In-Process Handler Load Failure

Troubleshooting steps:

  • Check the system event log for error messages
  • Enable logging the application process' stdout messages
  • Attach a debugger to the application process and inspect

For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526

下圖: 

               

部署后出現的以上錯誤的原因可能有以下幾點:

    1、沒有安裝第一部分中的前2個安裝包:.net core sdk(.net core sdk) 和 dotnet-hosting( .NET Core 托管捆綁包)

    2、發布或者部署時運行時版本沒有選擇正確。現在一般都是64位。注意詳細的配置。  

    3、部署后給iis和應用程序池的權限不夠。分別給iis網站和應用程序池,分管理員用戶權限。

    4、如果iis服務器環境安裝了以前版本的core,比如說3.0,發布后可能會有500錯誤。本人發布遇到這個問題,刪除舊版本統一新版本解決。

 

 其他參考:

       Windows平台部署Asp.Net Core應用(基於IIS和Windows服務兩種模式) : https://blog.csdn.net/weixin_33757609/article/details/93693395 。

 

2.403錯誤
請注意ssl的相關配置

3.503錯誤。

iis上其他應用報503錯誤,解決方式,修改下述文件下的兩處地方。給這兩個節點 指定加載模式 preCondition="bitness64"

C:\Windows\System32\inetsrv\config\applicationHost.config 

 

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

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

 

Core的應用報503,如果服務器是2012R2版本的話,需要安裝 Visual C++ Redistributable

鏈接地址: https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145

 4.404錯誤。

然后查看IIS日志, 如下圖

 

 
 

 

 

打開IIS日志存放目錄,C:\inetpub\logs\LogFiles\W3SVC4打開一看,沒問題啊,沒有錯誤日志啊(內心很糾結。。。)。

各種百度、Goolge就是沒找到解決辦法,一直以為是環境問題,服務器都重啟了不下3次

最后自己嘗試手動補齊了路由,一看可以了!!!
說到底還是對.NetCore了解不夠深入,發布后IIS托管站點后不會對路由默認補齊,所以在項目的launchSettings.json文件里改成一朵花都沒用。

 

 

默認路由未自動補齊導致404的解決辦法:
1、Nuget 安裝Microsoft.AspNetCore.Rewrite
2、在啟動項目Startup.Configure方法下的app.UseMvc();代碼前加入下面代碼:
var option = new RewriteOptions();
option.AddRedirect("^$", "swagger"); //swagger為補充的路由
app.UseRewriter(option);

app.UseMvc();·

 

.net core后台服務運行,阻止IIS應用程序池自動回收

回收——固定時間間隔(分鍾) 改為 0

——虛擬/專用內存限制(KB) 改為 0

進程模型——閑置超時(分鍾) 改為 0



 
 
前后端分離部署請參考: https://www.cnblogs.com/cjdonet/p/12816751.html

文章內容引用文章:https://www.cnblogs.com/davies/p/12038023.html      https://www.jianshu.com/p/a03c67feb0bd

                                https://www.cnblogs.com/lr215/p/12901687.html          https://www.cnblogs.com/liuqiyun/p/12213247.html


免責聲明!

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



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