Asp.net-Core

ASP.NET Core - 生成的 web.config 中的 processPath 錯誤

  • September 10, 2020

我有一個很奇怪的問題。

我們正在開發的其​​中一個應用程序在發佈到 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 添加到項目中(它現在根本不存在)並以我想要的方式將其置於原始碼控制中,這應該可以解決我的部署中斷問題。但我想知道:

  1. 在 VSTS 上建構生成的 web.config 顯然是錯誤的。這是 Microsoft.NET.SDK.Web 中的錯誤嗎?
  2. 我無權訪問實際的建構伺服器。我猜唯一合理的解釋是有人更新了.net core SDK,這就是行為改變的原因。這有意義嗎?msbuild 目標是來自 .NET Core SDK,還是 Visual Studio 的一部分?
  3. 我在我的機器上得到了不同的 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"/>

引用自:https://stackoverflow.com/questions/52151772