我有一个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变量?
答案 0 :(得分:1)
Web.config不是你应该编辑的东西,甚至不需要关心ASP.NET核心应用程序。它只是因为IIS需要它,只是为了启动应用程序。在这方面,它的发表应该完全没问题。
如果系统路径上没有dotnet.exe
,那么运行时安装可能会出现问题,因为这应该会自动发生。您可以重新安装运行时,也可以手动将C:\Program Files\dotnet
部分添加到系统PATH
环境变量中。