asp.net-web-api - ExtensionlessUrlHandler 和 "Recursion too deep; the stack overflowed"

标签 asp.net-web-api url-routing stack-overflow iis-express

我正在尝试让一位开发人员的应用程序在我的机器上运行。解决方案是使用 Web API 在 VS 2015 中构建的,我正在使用 64 位 IIS Express 运行它。每个请求都返回 500.0 错误。请求跟踪日志说明了这一点:

1517.  -MODULE_SET_RESPONSE_ERROR_STATUS 
ModuleName    ManagedPipelineHandler 
Notification  EXECUTE_REQUEST_HANDLER 
HttpStatus    500 
HttpReason    Internal Server Error 
HttpSubStatus 0 
ErrorCode     Recursion too deep; the stack overflowed. (0x800703e9) 
ConfigExceptionInfo

相关的配置部分如下所示:
<system.webServer>
<handlers>
  <remove name="OPTIONS" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*" verb="*" 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="*" 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="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>

其他可能相关的事实:
  • 机器之前没用过虚拟主机,不过我做了很多VS2013的开发,上周才装了2015跑这个项目。
  • 该项目确实包含一些 C# 6.0 功能,即新的字符串插值功能。

  • 我什至如何开始调试这个?我在 Google 上的相关点击率为零。

    最佳答案

    将 path="*"更改为 path="*."在您列出的每个处理程序中。

    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" 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="*" 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="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    

    我相信有一种方法可以使用 path=""但我还没有弄清楚它是什么。我刚刚遇到了这个问题,因为我试图使用 path=""并且那时抛出了“递归太深......”错误。

    关于asp.net-web-api - ExtensionlessUrlHandler 和 "Recursion too deep; the stack overflowed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35181260/

    相关文章:

    asp.net-web-api - 具有相同名称的多个参数

    c# - 根据返回类型Interface限制Web API序列化的模型数据字段

    ASP.net MVC 4 Web Api 路由,其中​​包含文件名

    php - 是否可以在 symfony2 中使路由的默认参数值动态化?

    haskell - 生成具有恒定堆栈空间的随机向量

    Azure 应用服务 API 用户注册功能

    javascript - 带 Backbone 路由的剑道

    c# - 如何将 Url.Route 用于 OData 路由

    c# - 堆栈溢出异常 (C#)

    javascript - es错误类如何避免栈溢出