.NET Core 应用程序 |信息系统 | HTTP 错误 500 - 无法加载配置。异常消息:需要属性“processPath”

Posted

技术标签:

【中文标题】.NET Core 应用程序 |信息系统 | HTTP 错误 500 - 无法加载配置。异常消息:需要属性“processPath”【英文标题】:.NET Core App | IIS | HTTP Error 500 - Could not load configuration. Exception message: Attribute 'processPath' is required 【发布时间】:2020-11-19 07:02:00 【问题描述】:

我正在尝试在同一站点的 Windows Server 2019 中的 IIS 中托管两个应用程序。其中一个应用程序是网站的前端,采用 Angular,另一个是网站的 API,采用 ASP.NET MVC (.NET Core 2.2.8)。 前端应用程序的 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 错误页面显示了一些我觉得奇怪的东西。请求 URL 正确,但物理路径为application_path\identity。 “身份”是 MVC 控制器,而不是文件。

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

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

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

【问题讨论】:

我从 Github 下载了 asp.net core 仓库,看了一下。存储库中有一个对“需要属性 'processPath'”的引用;它在一个用错误消息填充字典的测试工具中。不幸的是,面包屑的踪迹到此为止。我无法弄清楚字典的使用位置,或访问特定错误消息的位置。 尝试在您的应用中设置app.UsePathBase("/DotNetCoreApp");。 link1 , link2 【参考方案1】:

在我添加之前,一个缺少的配置对我造成了这个错误:环境变量 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 中(与您的站点对应的位置)。

【讨论】:

以上是关于.NET Core 应用程序 |信息系统 | HTTP 错误 500 - 无法加载配置。异常消息:需要属性“processPath”的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 打造一个简单的图书馆管理系统 学生信息增删(终章)

ASP.NET Core 打造一个简单的图书馆管理系统初始化书籍信息

ASP.NET Core 打造一个简单的图书馆管理系统 (修正版) 学生信息增删(伪终章)

.Net Core 配置 CORS 以同时允许所有子域和所有 localhost 端口

ASP.NET Core 打造一个简单的图书馆管理系统外借/阅览图书信息的增删改查

如何使用 ASP.NET Core Identity 将登录/注册系统添加到现有数据库?