ASP.NET Core - 生成的 web.config 中的 processPath 錯誤
我有一個很奇怪的問題。
我們正在開發的其中一個應用程序在發佈到 Azure Web App 後停止工作。在本地一切正常。經過長時間的調查,罪魁禍首是建構(在 VSTFS 中)生成的 web.config 有這個:
<aspNetCore processPath=".\SomeServiceName.Api " stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />而正確的是:
<aspNetCore processPath=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />請注意缺少的 .exe。
項目的建構輸出設置為控制台應用程序。它是 ASP.NET Core 應用程序,在完整框架上執行。建構使用
Visual Studio BuildVSTS 中的任務執行,具有以下 MSBuildArguments:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"如果我在我的開發機器上執行建構,使用 MSBuild cli,使用相同的命令行參數,我會得到:
<aspNetCore processPath="dotnet" arguments=".\SomeServiceName.Api.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />該項目正在使用
<Project Sdk="Microsoft.NET.Sdk.Web">.我猜我可以將 web.config 添加到項目中(它現在根本不存在)並以我想要的方式將其置於原始碼控制中,這應該可以解決我的部署中斷問題。但我想知道:
- 在 VSTS 上建構生成的 web.config 顯然是錯誤的。這是 Microsoft.NET.SDK.Web 中的錯誤嗎?
- 我無權訪問實際的建構伺服器。我猜唯一合理的解釋是有人更新了.net core SDK,這就是行為改變的原因。這有意義嗎?msbuild 目標是來自 .NET Core SDK,還是 Visual Studio 的一部分?
- 我在我的機器上得到了不同的 web.config。這是為什麼?
更新:對於任何在這裡絆倒的人,這裡 是
github 上的問題連結: https
://github.com/aspnet/websdk/issues/408雖然發布週期)。
我有完全相同的問題,我上週解決了它。我們有 2 個 ASP.Net Core 項目,一個顯示問題,另一個沒有問題。所以我們比較了 2 個 .csproj 文件。
事實證明,在我們的例子中,我們需要做的就是刪除
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup>.csproj 的屬性;完成後,MSBuild 正確創建了 web.config,包括 processPath 末尾的 .exe。
我有完全相同的問題,我上週解決了它。我們有 2 個 ASP.Net Core 項目,一個顯示問題,另一個沒有問題。
首先檢查 C:\Program Files\dotnet 路徑,如果 ‘sdk’ 文件夾不可用,則需要安裝 ASP.NET Core SDK。如果您安裝此軟體包,則問題已解決,並且 hte 應用程序正在執行:
<aspNetCore processPath="dotnet" arguments=".\yourapp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>