不知为什么,当访问一个不存在的路由时,我的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=""
在英文中,错误信息的意思是:"递归太深,堆栈溢出"。"递归太深,堆栈溢出。"
因此,这似乎是与在 另一个问题然而,从那里得到的答案对我的情况没有帮助。
两个答案都是指 <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>