【问题标题】:httpErrors ExecuteUrl not redirectinghttpErrors ExecuteUrl 未重定向
【发布时间】:2015-12-28 10:10:45
【问题描述】:

我有一个 asp.net 混合网络表单/mvc 应用程序。当用户尝试上传超过我的 maxAllowedContentLength 的文件时,我尝试使用 web.config 中的 httpErrors 标记重定向到自定义错误页面。

虽然“重定向”响应模式工作正常,但我无法让“ExecuteUrl”响应模式工作。

在使用 IIS Express 在 Visual Studio 2013 中进行单元测试以及部署到运行 IIS 7.5 的计算机时都会出现此问题。

使用“重定向”和 mvc 控制器的完整路径可以正常工作:

    <httpErrors errorMode="Custom" existingResponse="Replace"> 
  <remove statusCode="404" subStatusCode="13" /> 
  <error statusCode="404" subStatusCode="13" prefixLanguageFilePath=""
     path="http://localhost:12345/Error/ErrorFileUploadSizeExceeded" responseMode="Redirect" /> 
</httpErrors>

但是,使用带有相对路径的“ExecuteUrl”不起作用(相反我看到默认的iis 404页面,显然iis找不到相对路径):

    <httpErrors errorMode="Custom" existingResponse="Replace"> 
  <remove statusCode="404" subStatusCode="13" /> 
  <error statusCode="404" subStatusCode="13" prefixLanguageFilePath=""
     path="/Error/ErrorFileUploadSizeExceeded" responseMode="ExecuteURL" /> 
</httpErrors>

我需要改变什么才能让“ExecuteURL”工作?

【问题讨论】:

  • 这个运气好吗?我整个下午都在苦苦挣扎,我的控制器动作永远不会被击中(即使是绝对路径),尽管这是这里很多答案中建议的确切做法......
  • 对不起@Boris,运气不好。

标签: asp.net-mvc iis-7


【解决方案1】:

请检查您的 MVC 控制器是否与您的应用程序本身位于同一应用程序池中。

出于体系结构的原因,IIS 7.0 只能在 URL 位于同一个应用程序池中时才能执行它。使用重定向功能在不同的应用程序池中执行自定义错误。

【讨论】:

  • 这个答案没有任何意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多