我应该如何配置发布以确保ASP.NET Core使用正确的进程路径



我有一个ASP。NET Core(v1.1)web应用程序。web.config包含以下行:

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" forwardWindowsAuthToken="false" />

据我所知,这是我的本地IIS Express用来在本地启动应用程序的。

我现在正在配置发布,将其作为到远程服务器的自动化部署的一部分。发布后,web.config已更改为:

<aspNetCore processPath="dotnet" arguments=".MyProject.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" forwardWindowsAuthToken="false" />

当部署到远程服务器时,会出现此错误。我发现将processPath更改为完整的可执行路径(C:\Program Files\dotnet\dotnet.exe)解决了这个问题。对另一个SO问题的回答表明,这可能是一个故意的安全功能,以防止黑客攻击系统PATH变量。我只是尝试更改源中的web.config以显式设置该路径,但不幸的是,每次在本地运行站点时,值都会改回%LAUNCHER_PATH%

因此,我的问题是,如何确保我发布的应用程序包含正确的流程路径?也许正确的问题是:我应该在部署web服务器上配置什么,以确保它可以使用系统PATH变量?

Web.config不是您应该编辑的东西,甚至不是ASP需要关注的东西。NET核心应用程序。它之所以存在,只是因为IIS需要它,只是为了启动应用程序。在这方面,不管它是怎么出版的,都应该很好。

如果dotnet.exe不在系统PATH上,那么运行时的安装可能会出现一些问题,因为这应该是自动发生的。您可以重新安装运行时,也可以简单地手动将C:Program Filesdotnet部分添加到系统PATH环境变量中。

最新更新