自定义错误在本地部署,而不是在IIS上部署

时间:2015-07-26 02:02:04

标签: c# asp.net asp.net-mvc web-config http-status-codes

我有以下内容:

Web.config

<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<customErrors mode="On" defaultRedirect="~/Error/ShowError">
  <error redirect="~/Error/ShowError/400" statusCode="400" />
  <error redirect="~/Error/ShowError/401" statusCode="401" />
  <error redirect="~/Error/ShowError/403" statusCode="403" />
  <error redirect="~/Error/ShowError/404" statusCode="404" />
</customErrors>
</system.web>

ErrorController

[AllowAnonymous]
public class ErrorController : Controller
{
    public ViewResult ShowError(int id)
    {
        Response.StatusCode = id;
        switch (id)
        {
            case 400:
                return View("~/Views/Error/400.cshtml");
            case 401:
                return View("~/Views/Error/401.cshtml");
            case 403:
                return View("~/Views/Error/403.cshtml");
            case 404:
                return View("~/Views/Error/404.cshtml");
            default:
                return View("~/Views/Error/404.cshtml");
        }
    }
}

FilterConfig

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        //filters.Add(new HandleErrorAttribute());
    }

本地一切正常,我得到一个自定义错误页面,我很高兴,但是一旦我将网站部署到我的网络服务器,我就不再收到我的自定义错误消息,只有通用:

enter image description here

我是否需要在我的在线环境中添加特定于IIS配置的任何内容?

我已将本地Web.config与已部署的Web.config进行了比较,并且没有任何不同(我可以看到)。

1 个答案:

答案 0 :(得分:4)

IIS自定义错误会覆盖您的错误。

尝试:

Response.TrySkipIisCustomErrors = true