相关疑难解决方法(0)

ExtensionlessUrlHandler在MVC应用程序中做了什么?

我试图简化我的MVC应用程序并尽可能删除.有人可以向我解释下面这段代码在应用程序根目录下的web.config文件中的作用.我已将其评论出来并仍设法运行该应用程序...

<system.webServer>

  <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0"/>
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
    ...
Run Code Online (Sandbox Code Playgroud)

我看过这个问题:ASP.NET MVC 4和ExtensionlessUrlHandler有一个链接到这个博客的答案:http://blogs.msdn.com/b/tmarq/archive/2010/05/26/how-extensionless- urls-are-handling-by-asp-net-v4.aspx但是我没有找到它来解释我的问题.

我在开发和生产中使用:IIS 8,ASP.NET MVC 4,.NET 4.5

asp.net-mvc web-config isapi

21
推荐指数
2
解决办法
2万
查看次数

ASP.NET 返回 HTTP 500 而不是 404

出于某种原因,当访问不存在的路由时,我的 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> …

asp.net routing routes iis-10

8
推荐指数
1
解决办法
782
查看次数

标签 统计

asp.net ×1

asp.net-mvc ×1

iis-10 ×1

isapi ×1

routes ×1

routing ×1

web-config ×1