關於如何發佈 ASP.NET Core 應用程式到 IIS 上,官網上的這兩篇文章說得很清楚。
- Host ASP.NET Core on Windows with IIS
- Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
照著官網的步驟弄,一切還算順利,但還是遇到了一個小亂流,在執行 WebDeploy 的命令時,出現了「error MSB6006: "msdeploy.exe" 以返回碼 -1 結束
」的錯誤訊息。
我們拿 error MSB6006 msdeploy.exe
這組關鍵字去搜尋,是找不到解答的,而且很多問題的原因最終都會丟 MSB6006 這個錯誤代碼,但是用 Visual Studio 去執行 WebDeploy 是沒有問題的。
-verbosity:detailed
既然訊息不夠明確,那我們就讓它明確一點,我們在執行 dotnet msbuild ...
命令時,加個參數 -verbosity:detailed
(可縮寫成 -v:d
)就可以讓訊息多印一點。
dotnet msbuild "xxx.csproj" -verbosity:detailed ...
參數一加之後,真正的錯誤原因就現形了,原來是伺服器端的憑證不受信任的問題。
AllowUntrustedCertificate
在做 WebDeploy 的時候,跟伺服器之間的連線預設一定是走 SSL/TLS 通道的,一般來說我們在公司內部的開發環境,伺服器的憑證大都使用自簽發的,自簽發的憑證通常是沒有認證過的,不受到信任是正常的,那麼要解決這個問題只要加個 AllowUntrustedCertificate
參數就好了,加 AllowUntrustedCertificate 參數有兩個方式,一是加在 PublishProfile(pubxml)檔案裡面。
二是如果用 Command Line 執行 WebDeploy,則在指令當中加入 /p:AllowUntrustedCertificate=True
,這樣問題就解決了,可以順利執行 WebDeploy。
dotnet msbuild "xxx.csproj" /p:AllowUntrustedCertificate=True ...