我正在尝试在IIS中托管.net Core API。当我在Visual Studio中运行它时,一切都正常工作。对于部署,我首先将项目发布到一个文件夹,将内容复制到所需位置,并在IIS中创建一个应用程序。它被设置为使用一个配置为“无托管代码”的应用程序池。
当我尝试调用一个可用的端点(通过前端或手动)时,我收到一个http 500错误(内部服务器错误)。您要查找的资源有问题,无法显示。)
我在服务器上找不到任何有意义的日志。只有在事件查看器中才能找到错误事件。
“无法加载配置。异常消息:需要属性'processPath'。”
现在我不确定为什么会这样,因为项目的Web.config中的processPath属性肯定存在,并且在发布时是这样生成的。它看起来像:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
字符串
安装了核心托管包。在这个服务器上完全重启是不可行的(或者至少我想避免它)。所以我跑了
net stop was /y
net start w3svc
型
了解任何变化
我会很高兴的任何想法和建议,如何解决这个问题。提前感谢!
4条答案
按热度按时间egdjgwm81#
所以我花了比我愿意承认的更长的时间才找到这个问题的原因。但对于任何人谁可能在未来绊倒这是什么帮助了我。
我将项目托管在IIS中所需站点下的两个子文件夹中。So Desired_Site -> Subfolder 1-> Subfolder 2->实际项目文件。我的猜测是IIS无法处理这个位置的web.config文件。我搬家的时候
字符串
从项目的web.config文件到Subolder 1中的web.config(相应地调整路径),一切都按预期工作。如果您遇到同样的问题,请确保您尝试托管的文件夹结构尽可能平坦。
8aqjt8rx2#
这个错误发生在我身上,因为我不小心将Azure虚拟路径Map设置为“目录”,而它应该是“应用程序”
af7jpaap3#
如果宿主在IIS的子文件夹中,请确保“转换为应用程序”!这是我的问题。我不需要修改任何东西。
fcg9iug34#
另一个缺少的配置导致了这个错误,直到我添加它:环境变量ASPNETCORE_ENVIRONMENT
字符串
您可以将其放在web.config中,但如果您从Visual Studio发布新版本的Web应用程序,它将被删除。为了避免这种情况,请将其放在applicationHost.config中(与您的站点对应的位置)。