代码之家  ›  专栏  ›  技术社区  ›  Adrian Grigore

ASP.NET:如何正确重定向404错误的请求?

  •  3
  • Adrian Grigore  · 技术社区  · 15 年前

    我希望我的ASP.NET MVC应用程序将失败的请求重定向到某个控制器的匹配操作方法。这在运行Windows7的开发计算机上运行很好,但在运行Windows2008 R2的生产计算机上不起作用。

    我的web.config设置如下:

    <customErrors mode="On" defaultRedirect="/Error/ServerError/500">       
                <error statusCode="403" redirect="/Error/AccessDenied" />
                <error statusCode="404" redirect="/Error/FileNotFound" />
    </customErrors>
    

    在我的两台机器(生产和开发)上,对于500个内部服务器错误,此customerrrors部分都可以正常工作。

    在我的开发机器上,它还可以处理404个错误。

    但是,它不能正确地重定向生产机器上的404错误。我得到的不是/error/filenotfound,而是与IIS7一起提供的标准404页。

    这里可能有什么问题?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    What is the difference between customErrors and httpErrors?

    另请参见 http://msdn.microsoft.com/en-us/library/ms690576.aspx

    客户错误 属于ASP.NET。 http错误 是iis7的新版本(我假设在这两种情况下都使用)。

    这个问题很可能与你的 IIS Pipeline 模式。也许您的产品可能在IIS经典管道模式下运行?

    编辑

    相反。在 集成 管道模式 客户错误 未使用标记。

        2
  •  1
  •   Adrian Grigore    15 年前

    如果其他人有相同的问题:解决方案是向system.webserver部分添加httperrors元素:

    <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="/Error/FileNotFound" responseMode="ExecuteURL" />
    </httpErrors>
    

    在Windows 2008 R2中,也可以通过IIS控制面板完成此操作(请参阅“错误页”)。