踩坑日記與 Windows 服務器部署 asp.net core 指南。
准備
操作系統:Windows Server 2008 R2 或更高版本
文件:
- Microsoft Visual C++ 2015 Redistributable
- aspnetcore-runtime
- dotnet-hosting
后面這兩個文件的下載地址:.NET download archives for Linux, macOS, and Windows
准備 asp.net core web 應用程序
Step1 使用 VS2017 建立 asp.net core web 應用程序。
Step2 發布。使用 “IIS,FTP” - “文件系統” 的發布方式,獲取發布文件。
具體的操作,可參考這里:
使用 IIS 在 Windows 上托管 ASP.NET Core2.0 - Sundar - 博客園
Step3 IIS配置。在服務器上啟用 IIS 服務,默認配置即可。
安裝 asp.net core 運行環境
在服務器上分別安裝
- Microsoft Visual C++ 2015 Redistributable
- aspnetcore-runtime
- dotnet-hosting
安裝完成后,重啟系統,或從命令提示符處依次執行 net stop was /y
和 net start w3svc
。
重新啟動 IIS 將選取安裝程序對系統 PATH 所作的更改。
安裝 asp.net core 運行環境必須在配置好 IIS 之后進行。
在 IIS 中添加網站
無特殊配置,需要注意的是,將應用程序池中對應的項修改為 無托管代碼 。
以上所有操作都可以參考 使用 IIS 在 Windows 上托管 ASP.NET Core2.0 - Sundar - 博客園 這篇博文,寫得很清晰。
重點:可能會遇到的問題
500.19
原因:安裝 dotnet-hosting 在添加 IIS 之前,或者安裝完成之后,沒有進行重啟。
解決方案:重新安裝 dotnet-hosting ,選擇修復選項。然后重啟服務器。
502.5
原因:asp.net 所需運行環境不夠。
解決:
方案1: 安裝 SDK 。 但這種方案沒有在我這里生效,安裝姿勢不對?
方案2: 在 asp.net 項目的 csproj 文件中添加
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
然后重新發布,會發現發布文件里面多了很多依賴項,更新服務器端的文件,重啟網站,應該就可以大功告成了。
簡單的事情,一定有簡單的解決方案,對於部署 asp.net core 這種應該很標准化的操作,如果遇到問題需要很復雜,看起來就很奇奇怪怪的方案,那很可能是方向錯了。
之前就踩過坑,嘗試采用安裝重定向等等奇怪的方法。
參考資料:
- 使用 IIS 在 Windows 上托管 ASP.NET Core2.0 - Sundar - 博客園
- ASP.NET Core 2.0 Preview 2 on IIS error 502.5 - Stack Overflow
- Host ASP.NET Core on Windows with IIS | Microsoft Docs
- 使用 IIS 在 Windows 上托管 ASP.NET Core | Microsoft Docs
原文鏈接:https://www.cnblogs.com/jasongrass/p/10645606.html
END