O. *_*per 8 asp.net routing routes iis-10
出于某种原因,当访问不存在的路由时,我的 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,并且接受“扩展名”路由(即最后一个斜杠后的最后一部分包含点的路由)?
编辑:我已经设法增加了我的 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>
Run Code Online (Sandbox Code Playgroud)
小智 2
确保您的 Web api 可与“.”配合使用 (点)在路径为“*”的全局处理程序之前添加特定的 API 处理程序。
请参阅下面的示例:
<add name="ApiURIs-ISAPI-Integrated-4.0-ForApi" path="/api/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |