我正在尝试在IIS中托管.net Core API。 当我在Visual Studio中运行它时,一切工作正常。为了进行部署,我首先将项目发布到一个文件夹中,将内容复制到所需的位置,然后在IIS中创建一个应用程序。设置为使用与“无托管代码”共同构成的应用程序池。
当我尝试调用一个可用的端点(通过前端或手动)时,收到HTTP 500错误(内部服务器错误。您正在寻找的资源有问题,并且无法显示。)< / p>
我在服务器上找不到任何有意义的日志。我只能在事件查看器中找到错误事件。
“无法加载配置。异常消息:属性'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>
已安装核心Hosting Bundle。完全重启在此服务器上并不可行(或者至少我想避免这种情况)。因此,我跑了
net stop was /y
net start w3svc
了解所做的任何更改。
对于如何解决此问题的任何想法和建议,我都会感到高兴。 提前非常感谢!
答案 0 :(得分:1)
所以花了我比我承认的更长的时间才能找到导致此问题的原因。 但是对于那些将来可能会迷失方向的人来说,这就是帮助我的地方。
我将项目托管在IIS中所需站点下的两个子文件夹中。 因此,Desired_Site-> Subfolder1-> Subfolder2->实际项目文件。 我的猜测是IIS无法处理此位置中的web.config文件。 当我搬家
<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>
从项目web.config文件到Subolder1中的web.config(相应地调整路径),一切正常。 如果您遇到相同的问题,请确保要尝试托管的文件夹结构尽可能平坦。
答案 1 :(得分:0)
另一个缺失的配置导致了这个错误,直到我添加它:环境变量 ASPNETCORE_ENVIRONMENT
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" >
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
您可以将它放在 web.config 中,但如果您从 Visual Studio 发布新版本的 Web 应用程序,它将被删除。为避免这种情况,请将其放在 applicationHost.config 中(与您的站点对应的位置)。