Global_Asax Application_Error已取消,而不是默认IIS7 404 Page Not Found Page

时间:2010-11-26 13:48:12

标签: c# asp.net iis-7 global-asax custom-error-pages

我有一个Web应用程序,它有Global_Asax和自定义错误页面。当用户尝试输入不存在的无效页面时,将在Global_asax中触发Application_Error并记录异常,这实际上不是异常(您可以在下面看到异常详细信息)。我不想在global_asax中处理这种情况,而是在IIS中处理。我还尝试输入以.asp和.html结尾的无效路径,它们工作正常(它们不以global_asax结尾,而是在默认的404页面中结束)。

我需要知道我必须从IIS7 Manager更改哪个设置。

任何帮助都将不胜感激。

  

错误 - 文件'/restricted/ff.aspx'   不存在。

     

System.Web.HttpException:该文件   'test.aspx'不存在。在   System.Web.UI.Util.CheckVirtualFileExists(VirtualPath   virtualPath)at   System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath   virtualPath,Boolean noBuild,Boolean   allowCrossApp,Boolean   allowBuildInPrecompile)at   System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext的   上下文,VirtualPath虚拟路径,   布尔值noBuild,布尔值   allowCrossApp,Boolean   allowBuildInPrecompile)at   System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath   virtualPath,HttpContext上下文,   Boolean allowCrossApp,Boolean   noAssert)at   System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath   virtualPath,Type requiredBaseType,   HttpContext上下文,布尔值   allowCrossApp,Boolean noAssert)at   System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext的   context,String requestType,   VirtualPath virtualPath,String   physicalPath)at   System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   在   System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔& completedSynchronously)

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法之一:

  1. 编辑 web.config 文件以查找自定义错误:

    <customErrors mode="On">
        <error statusCode="404" redirect="404.aspx"/>
    </customErrors>
    
  2. 添加404.aspx页并将状态代码设置为 404

    public partial class _04 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.StatusCode = 404;
        }
    }
    
  3. 如果它没有帮助你也尝试这个(它可能会被你的主页重置):

    protected override void Render(HtmlTextWriter writer)
    {
        base.Render(writer);
        Response.StatusCode = 404;
    }