第一部分:本教程介紹如何在 IIS 服務器上托管 ASP.NET Core 應用。
本教程涵蓋以下主題:
- 在 Windows Server 上安裝.NET Core Hosting Bundle。
- 在 IIS 管理器中創建 IIS 站點。
- 部署 ASP.NET Core 應用。
我概況一下,主要是安裝2個文件:
1、安裝. NET Core SDK 安裝在開發計算機上(dotnet-sdk-3.1.100-win-x64.exe)
下載地址:https://dotnet.microsoft.com/download。選擇 Download .NET Core SDK 這個版本進行安裝就可以。
2、安裝 .NET Core 托管捆綁包(dotnet-hosting-3.1.0.exe)。使用以下鏈接下載安裝程序:
下載地址:當前 .NET Core 托管捆綁包安裝程序(直接下載) https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer
3、安裝 Web Platform Installer。(這一步可以省略,我見.net core 2.0版本有人裝這個,我的windows10安裝了,windows Server服務器沒有裝 )。
下載地址:https://www.microsoft.com/web/downloads/platform.aspx
4、重啟電腦,或者在命令行執行以下命令(我建議以下命令執行完后重啟電腦吧)。
重啟服務器或在命令行界面中執行 net stop was /y,后跟 net start w3svc 。
第二部分:關於發布、部署到iis的一些配置:
1. 關於visual studio 2019發布.net core 3.0時一些配置
發布-步驟1:選取發布目標:選擇文件夾,然后點擊高級:
發布-步驟2:目標框架:netcoreapp3.0, 部署模式:框架依賴,目標運行時:選擇可移植。然后保存。
注意: 這里要重點說明:這里的目標運行時:win-x64或者win-x86 是你第一步,安裝.net core sdk的運行時版本。並不是你操作系統的版本
我們在第一部介紹時,就直接選擇的是64位按照包,所以這個文章所有截圖中都是選擇64位運行時版本。
發布-步驟3:點擊發布按鈕,就發布完成。
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。所以一定要改。
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 官方文檔。
我部署過程中遇到的問題:如下
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網站和應用程序池,分管理員用戶權限。
其他參考:
Windows平台部署Asp.Net Core應用(基於IIS和Windows服務兩種模式) : https://blog.csdn.net/weixin_33757609/article/details/93693395 。