ASP.NET返回HTTP 500而不是404

问题描述 投票:1回答:1

不知为什么,当访问一个不存在的路由时,我的ASP.NET Web应用程序返回错误500(显然是源于处理程序 "ExtensionlessUrlHandler-Integrated-4.0")。

这个问题是在我修改了 path="*."path="*"<add name="ExtensionlessUrlHandler-Integrated-4.0" ... 吾辈 Web.config 文件,以解决 另一个问题 (无法处理最后一个斜线后带点的路由)。

我无法更改 path 回到 "*."虽说 在另一个问题中提出的解决办法因为那会让人想起 另一个问题 - 在最后一个斜线后带点的路由已经找不到了。

就像那个链接中的 其他问题我使用的是OData。但是,我不知道在我的情况下,它应该在路由解析中发挥任何作用,因为我的情况是 认为 我们把它当作一个普通的库,在C#项目中被引用,并被一些Web API端点调用。

<modules runAllManagedModulesForAllRequests="true"/> 已经在我的 Web.config 文件。

还有什么办法可以让未知路径返回404呢? "extension-ful "路由(即最后一个斜线后的部分包含一个点的路由)可以接受吗?

EDIT: 我设法增加了我的FREB日志大小,现在看到的违规条目是1346号,称

ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="内部服务器错误", HttpSubStatus="0", ErrorCode="Rekursion zu tief, Stapelüberlauf. (0x800703e9)", ConfigExceptionInfo=""

在英文中,错误信息的意思是:"递归太深,堆栈溢出"。"递归太深,堆栈溢出。"

因此,这似乎是与在 另一个问题然而,从那里得到的答案对我的情况没有帮助。

  • 菲利普 建议删除各种处理程序,这对我来说没有任何改变。
  • Joe Davis 建议解决的办法是 "*." 路径,虽然能用,但会造成 其他问题,如上所述。

两个答案都是指 <handlers> 在我 Web.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>
asp.net routing routes iis-10
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.