【问题标题】:SQL Exception breaks IIS request pipelineSQL 异常中断 IIS 请求管道
【发布时间】:2011-10-02 04:51:51
【问题描述】:

我有让 IIS 发疯的 MVC3 应用程序。我也是。

如果发生 SQLException(即缺少存储过程)请求管道中断,用户会看到“抱歉,处理您的请求时发生错误”,事件查看器中不会记录任何内容。请求跟踪绝对没有提供有用的信息,但您可以查看here。有趣的部分在第 6448 行,错误代码是“操作成功完成”。

现在是有趣的部分:

  • 我的机器 win7 64bit - 按预期工作,显示 YSOD
  • 我的一台主机 win2008 网络服务器 32 位 - 按预期工作,显示 YSOD
  • 客户端的主机 win2008 R2 服务器内核 64 位 - 如上所述的管道中断
  • (用于测试目的)客户端的主机 win2008 web 服务器 64 位 - 如上所述的管道中断

更新:这个问题不仅限于 SQLException。任何异常,即 throw new Exception("Bla") 都会如上所述破坏管道。

【问题讨论】:

  • 我不明白你说的broken pipeline是什么意思。
  • 在这种情况下,管道损坏意味着 IIS/ASP.NET 没有像通常那样处理 sqlexception
  • 您托管应用程序的应用程序池是否在集成模式下运行?还是经典模式?
  • 是的,池在集成模式下运行。
  • 应用程序的其余部分是否正常工作(如果没有抛出异常)?

标签: asp.net-mvc iis request-pipeline


【解决方案1】:

我认为这是因为您的控制器中的某处可能有 [HandleError] 属性。此属性始终捕获未捕获的异常并显示可以在您的共享文件夹中找到的默认 Error.cshtm 视图。

有关更多信息,请参阅此相关answer

问候。

【讨论】:

  • 我的控制器都没有 HandleError 属性。
  • 但我确实有全局过滤器 HandleErrorAttribute。我在 global.asax 中错过了它。剩下的唯一问题是为什么某些 IIS/ASP.NET 配置会忽略这一点?感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2013-05-18
  • 1970-01-01
相关资源
最近更新 更多