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

时间:2017-10-23 13:58:11

标签: asp.net iis asp.net-core

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

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

我知道我的本地IIS Express使用它来在本地启动应用程序。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

Web.config不是你应该编辑的东西,甚至不需要关心ASP.NET核心应用程序。它只是因为IIS需要它,只是为了启动应用程序。在这方面,它的发表应该完全没问题。

如果系统路径上没有dotnet.exe,那么运行时安装可能会出现问题,因为这应该会自动发生。您可以重新安装运行时,也可以手动将C:\Program Files\dotnet部分添加到系统PATH环境变量中。