ASP.NET Core發行時出現TransformWebConfig錯誤
日前接手一個 ASP.NET Core 的專案,在本機開發與測試一切正常。但在進行發行時會出現一個 TransformWebConfig 錯誤,造成發行錯誤:
Severity Code Description Project File Line Suppression State
Error The "TransformWebConfig" task failed unexpectedly.
System.Exception: In process hosting is not supported for AspNetCoreModule. Change the AspNetCoreModule to atleast AspNetCoreModuleV2.
at Microsoft.NET.Sdk.Publish.Tasks.WebConfigTransform.TransformAspNetCore(XElement aspNetCoreElement, String appName, Boolean configureForAzure, Boolean useAppHost, String extension, String aspNetCoreModuleName, String aspNetCoreHostingModel)
at Microsoft.NET.Sdk.Publish.Tasks.WebConfigTransform.Transform(XDocument webConfig, String appName, Boolean configureForAzure, Boolean useAppHost, String extension, String aspNetCoreModuleName, String aspNetCoreHostingModel, String environmentName)
at Microsoft.NET.Sdk.Publish.Tasks.TransformWebConfig.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
在 Developer Community 看到的討論是把 .csproj
裡的 <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
值改為小寫 <AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>
並且會在 Visual Studio 2019 進行修正。修改為小寫沒有用並且我用的就是 Visual Studio 2019。
很快又在 stack overflow 看到另一討論,把 <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
從 .csproj
刪除,可行,但覺得不對勁。裡面還有一個將 <AspNetCoreHostingModel />
修改為 <AspNetCoreHostingModelV2 />
的方法,也可行。當我們修改為 <AspNetCoreHostingModelV2 />
它會去使用 IIS 主機 C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
來運行。不過,我在網路只查到一點點資料,而且都是非官方,這讓我用起來不太安心。
最後在 Host ASP.NET Core on Windows with IIS 裡找到一組 IsTransformWebConfigDisabled
設定,
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
原因文件裡也有交代,預設情況下,Visual Studio 會進行 web.config 的組態轉換,而我接手的這個 ASP.NET Core 並未含 web.config,web.config 轉換是在發行時才會進行動作,一般開發與偵錯並不會進行 web.config 轉換,由錯誤訊息與文件來看 IsTransformWebConfigDisabled
的處理我認為才是最正確的。我們並未使用 web.config 來進行 ASP.NET Core 組態,那麼取消這個動作也是合情合理。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。