ASP.NET Core發行時出現TransformWebConfig錯誤

ASP.NET Core發行時出現TransformWebConfig錯誤

日前接手一個 ASP.NET Core 的專案,在本機開發與測試一切正常。但在進行發行時會出現一個 TransformWebConfig 錯誤,造成發行錯誤:

TransformWebConfig Error
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 組態,那麼取消這個動作也是合情合理。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。