gpt4 book ai didi

ASP.NET 返回 HTTP 500 而不是 404

转载 作者:行者123 更新时间:2023-12-03 17:32:37 24 4
gpt4 key购买 nike

出于某种原因,当访问不存在的路由时,我的 ASP.NET Web 应用程序返回错误 500(显然源自处理程序“ExtensionlessUrlHandler-Integrated-4.0”)。

这个问题是我换了以后才开始出现的path="*."path="*"<add name="ExtensionlessUrlHandler-Integrated-4.0" ...我的行 Web.config文件以解决another problem (未能在最后一个斜杠后处理带有点的路由)。

我无法改变 path返回 "*." ,即使正是 suggested as a solution in another question ,因为那会带回 the other problem - 在最后一个斜杠之后的部分中找不到点的路线。

就像链接中的other question ,我正在使用 OData。但是,在我的情况下,我根本不知道它应该在路由解析中发挥任何作用,因为我认为我们将它视为在我们的 C# 项目中引用并由我们的一些 Web API 端点调用的普通库。
<modules runAllManagedModulesForAllRequests="true"/>已经在我的 Web.config 中设置了文件。

我还能做什么来为未知路由返回 404,并且接受“扩展名”路由(即最后一个斜杠后的最后一部分包含点的路由)?

编辑:我已经设法增加了我的 FREB 日志大小,现在看到有问题的条目是编号 1346,说

ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="Rekursion zu tief, Stapelüberlauf. (0x800703e9)", ConfigExceptionInfo=""



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

因此,它似乎与 another question 中的问题相同,但是,那里的答案对我的情况没有帮助:
  • Philip建议删除各种处理程序,这对我没有任何改变。
  • Joe Davis建议使用 "*." 的解决方案路径,它有效,但会导致 other problem , 如上所述。

  • 两个答案均引用 <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>

    最佳答案

    确保您的 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" />

    关于ASP.NET 返回 HTTP 500 而不是 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60865362/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com