MVC自定义错误在IIS8.5中无效(但在本地工作)

时间:2015-10-31 13:50:08

标签: asp.net-mvc iis

我无法在IIS8.5中显示任何自定义错误页面!

当我在Visual Studio中本地运行MVC 5应用程序时,会显示自定义错误页面。但是当我在我的网络服务器上部署到IIS并导航到带有“错误URL”的网站子页面时,我的自定义404页面应该会显示,但会显示默认的通用404页面。

以下是我所做的:

的web.config

customError部分已被删除。

添加了以下部分

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" />
      <remove statusCode="500" />
      <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />      
      <error statusCode="500" responseMode="ExecuteURL" path="/Error/ServerError" />      
    </httpErrors>
  </system.webServer>

控制器

namespace MyApp.Controllers
{
  [Authorize(Roles = "MyRole")]
  public class ErrorController : Controller
  {
    [AllowAnonymous]
    public ActionResult NotFound()
    {
        Response.StatusCode = 404;

        return View();
    }

    [AllowAnonymous]
    public ActionResult ServerError()
    {
        Response.StatusCode = 500;

        return View();
    }
  }
}

视图

非常简单直接(不包括在这里)。

IIS

已验证IIS错误页面功能与我的配置中的功能相同。每个错误状态代码的页面。功能和页面设置为“自定义”。

已安装已检查的Windows功能\ Web服务器(IIS)\ Web服务器\常见HTTP功能\ HTTP错误。

开发人员工具

导航到拼写错误的子页面显示我收到404客户端错误。

帮助

我尝试了很多东西!我错过了什么吗? IIS环境问题,即某处设置?

自定义错误在我的IDE中有效但在IIS上无效。我花了一天多的时间!阅读SO上的许多页面,文章和类似问题。

3 个答案:

答案 0 :(得分:1)

经过几天的调查,终于找到了问题。

在IIS中,我的网站作为默认网站下的应用程序驻留,例如默认网站\ MyDevSite。 (我的所有开发站点都在默认网站下。)

当我将网站移至其自己的IIS网站时,现在正在显示自定义错误页面!

如果有人知道在IIS中使用应用程序阻止显示自定义错误页面的原因,请在此处添加注释。理解为什么会发生这种情况会很好。

我希望这可以帮助别人。我已经有一段时间了。

答案 1 :(得分:0)

您是如何浏览IIS的?如果您是从同一台计算机上执行此操作,那么您将无法查看自定义错误页面,因为如果未指定,customErrors部分将默认使用RemoteOnly。 / p>

答案 2 :(得分:0)

问题出在web.config(path =“ / Error / NotFound”)中的路径。在“默认网站”下移动网站时,“未找到”页面的url路径将被更改。因此,在路径中提供正确的页面url即可使用(对我来说这是有效的)。