.NET Core应用| IIS | HTTP错误500-无法加载配置。异常消息:属性'processPath'是必需的

时间:2020-07-29 16:07:49

标签: iis .net-core asp.net-core-mvc iis-10 windows-server-2019

我正在尝试在同一站点的Windows Server 2019的IIS中托管两个应用程序。其中一个应用程序是Angular中的网站前端,另一个是ASP.NET MVC(.NET Core 2.2.8)中的网站API。
前端应用程序的URL为site_url/portal,API的为site_url/api

在使用API​​的其他操作之前,必须使用Windows身份验证从site_url/api/identity URL请求JSON Web令牌。 前端似乎工作正常,但是在质量控制环境中尝试到达site_url/api/identity API会产生“ HTTP错误500.0-内部服务器错误”。
我在IIS中激活了详细的日志,事件查看器中的错误消息为“无法加载配置。异常消息:要求属性'processPath'。”
API的web.config文件确实具有进程路径:

<?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="dotnet" arguments=".\PortalAPI.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" forwardWindowsAuthToken="true"/>
    </system.webServer>
  </location>
</configuration>

另外,IIS错误页面显示了一些我觉得很奇怪的东西。请求网址正确,但物理路径为application_path\identity。 “身份”是MVC控制器,而不是文件。

已安装.NET Core 2.2 Windows主机捆绑包并设置了.NET path环境变量。
应用程序池标识是应用程序用户,并且.NET CLR版本设置为“无托管代码”。
该站点同时启用了匿名身份验证(用于前端登录页面)和Windows身份验证。

问题是,我已经在开发环境和干净的Azure虚拟机中以完全相同的方式托管了应用程序,并且它们在这两种环境中均可工作,这使我认为这与IIS或质量控制机器本身。

有人知道这个问题和/或可能的解决方案是什么吗?

1 个答案:

答案 0 :(得分:0)

一个丢失的配置导致了这个错误,直到我添加它:环境变量 ASPNETCORE_ENVIRONMENT

<system.webServer>
  <handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="dotnet" arguments=".\PortalAPI.dll" 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 中(与您的站点对应的位置)。