ASP MVC没有根据httpErrors配置显示正确的错误页面

时间:2014-11-12 13:24:59

标签: c# asp.net asp.net-mvc asp.net-mvc-4 iis

我正在为我的网络应用程序使用最新版本的ASP.NET MVC 5,它正在IIS 7.5附带Windows 7。我正在努力在web.config中实现httpErrors并在我的错误控制器中达到断点。

我已尝试显示HTML文件并从错误控制器显示视图作为错误消息。这是我在web.config中的当前设置:

<system.webServer>
     <httpErrors errorMode="Custom" existingResponse="Replace">
          <remove statusCode="404" subStatusCode="-1" />
          <remove statusCode="500" subStatusCode="-1" />
          <error statusCode="404" path="/Error/Http404" responseMode="ExecuteURL" />
          <error statusCode="500" path="Http500.html" responseMode="File" />
     </httpErrors>
</system.webServer>

我有一个ErrorController类。 Views下有一个名为Error的目录。在Error目录中有2个文件:

  • Http404.cshtml
  • Http500.cshtml

当我输入www.mywebsite.com/foo时,会发生以下情况:

  • 点击Application_Error方法
  • 我的错误控制器中的Http404操作方法中的断点未被点击
  • 显示给我的页面是白色的,没有任何内容
  • Google Chrome向我显示已抛出HTTP 403禁止错误

当我输入www.mywebsite.com/foo.html时,会发生以下情况:

  • 未按下Application_Error方法
  • 我的错误控制器中的Http404操作方法中的断点未被点击
  • 显示给我的页面是白色的,没有任何内容
  • Google Chrome向我显示已抛出HTTP 403禁止错误

当我将httpErrors配置更改为以下配置时,将显示我的静态HTML页面,其中找不到正确的HTTP 404错误:

<system.webServer>
     <httpErrors errorMode="Custom" existingResponse="Replace">
          <remove statusCode="404" subStatusCode="-1" />
          <error statusCode="404" path="Http404.html" responseMode="File" />
     </httpErrors>
</system.webServer>

我的Application_Error方法中没有任何内容:

protected void Application_Error(object sender, EventArgs e)
{
     Exception exception = Server.GetLastError();
}

这就是我的错误控制器的样子:

public class ErrorController : Controller
{
     public ActionResult Http404()
     {
          // Not sure if this is needed?
          Response.StatusCode = (int)HttpStatusCode.NotFound;

          return View();
     }

     public ActionResult Http500()
     {
          // Not sure if this is needed?
          Response.StatusCode = (int)HttpStatusCode.InternalServerError;

          return View();
     }
}

我从web.config中删除了customErrors配置。

我有以下问题:

  • 如何解决此问题以在我的错误控制器中显示我的视图?
  • 为什么有些错误会触及Application_Error方法而其他错误没有?
  • 我如何知道它是ASP MVC错误还是IIS错误?
  • 在Application_Error中捕获了一些错误,而其他错误则没有,我如何记录所有错误?

0 个答案:

没有答案