第一部分:本教程介紹如何在 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 問題處理:
常見的異常處理方式:
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文件里改成一朵花都沒用。

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/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