【发布时间】: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'”的引用;它在一个用错误消息填充字典的测试工具中。不幸的是,面包屑的踪迹到此为止。我无法弄清楚字典的使用位置,或访问特定错误消息的位置。
标签: iis .net-core asp.net-core-mvc iis-10 windows-server-2019