【发布时间】:2017-12-20 16:37:59
【问题描述】:
目前我们有一个可用的 ASP.NET WebAPI 2 项目,它正在使用IdentityServer3.AccessTokenValidation 编译和运行。卸载 NuGet 包并安装较新的 IdentityServer4.AccessTokenValidation 后,项目现在停止运行并显示 HTTP 错误 500.19 - 内部服务器错误。我们已经尝试了很多事情,但我们不确定如何确定根本问题并解决。持续升级到 IdentityServer4 会重现该错误。
详细错误信息:
Module: CustomErrorModule
Notification: SendResponse
Handler: Not yet determined
Error Code: 0x80070490
Config Error: The configuration section 'system.webServer/httpErrors' cannot be read because it is missing a section declaration
Config File: \\?\C:\Users\joe\AppData\Local\dftmp\Resources\91a2e717-5753-4ca7-b31d-40e068e91e84\temp\temp\RoleTemp\applicationHost.config
目前Startup.cs 中的所有 Identity Server 代码都已被注释掉,所以本质上唯一的变化是更换 IdentityServer 库,这会可靠地重现此问题
关于其他上下文,这里有一些细节:
- 这是 WebAPI 2
- .NET 4.6
- 这将作为 Azure 云服务托管,但目前我们只是在本地工作,直到我们发现问题
- 我们没有定义
httpErrors部分并添加了一个对错误的存在没有影响的部分 - 此列出的文件不存在
- 我们没有进行任何权限更改,也不应该更改,因为它是一个云服务
更新 1
经过额外分析,我们观察到另一个错误发生在上述错误之前。我们已经确认在 cmets 中提到的“干净”虚拟机上也发生了同样的事情
详细错误信息:
Module: CustomErrorModule
Notification: SendResponse
Handler: ExtensionlessUrl-Integrated-4.0
Error Code: 0x80070002
Config Error: Cannot read configuration file
Config File: applicationHost.config
我们的配置部分包含以下处理程序。作为升级的一部分,这些都没有改变,删除它对错误没有影响
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
【问题讨论】:
-
您能否在干净的 dev manchine/vm 上或在部署到 dev env 后重现此问题?
-
@abatishchev,好问题...是的...我只是在干净的 Windows Server VM 上进行了复制。完全相同的升级过程会导致相同的错误,尽管文件夹路径显然不一样。请注意,这意味着我可以在 Windows 桌面和 Windows Server 上进行复制。
-
愚蠢的问题:如果你添加部分声明或/和部分本身怎么办?该临时配置的外观如何,您的 Web.config 有什么偏差?你知道为什么它是 appHost.config 而不是 Web.config 吗?内置section声明一般在machine.config或者appHost.config中,error也有提到,我觉得不是巧合。
-
@abatishchev,我们一直有
system.webServer部分,只是没有httpErrors部分,添加它对此错误没有影响。至于web.config,我们确实有一个,唯一的更改是通过 IS NuGet 包安装(及其依赖项)对runtime/assemblyBinding进行的更改。 -
C:\Users\joe\AppData\Local\dftmp\Resources\91a2e717-5753-4ca7-b31d-40e068e91e84\temp\temp\RoleTemp\applicationHost.config 是什么样子的?
标签: asp.net-web-api identityserver4