“App”文件夹的自定义错误? (ASP.NET)

时间:2008-11-14 16:31:50

标签: asp.net iis error-handling web-config

在哪里可以为我的应用程序中的目录设置自定义错误,例如App_Code,App_Browsers等?我已经在web.config中配置了customErrors,并且按预期工作。例如,

http://www.mysite.com/bla.aspx>重定向到404页

http://www.mysite.com/App_Code/>显示“系统找不到指定的文件。”

我的网站没有物理App_Code目录。这是我可以在IIS中更改的内容吗?

4 个答案:

答案 0 :(得分:1)

我相信您需要在IIS本身设置错误页面,因为您谈到的请求永远不会到达ASP.NET应用程序。第一个示例的工作原因是因为IIS识别.ASPX扩展并将其转发到ASP.NET。

答案 1 :(得分:1)

您正在尝试从受保护的文件夹中服务内容...... ??

我认为您可能需要允许访问这些文件夹才能获得您正在寻找的错误...

http://www.webdavsystem.com/server/documentation/hosting_iis_asp_net/protected_folders

有人说......这些文件夹受到保护是有原因的。

我永远不会把我需要的IIS放在受保护的文件夹中。

但总有理由做某事吗?我在短暂的生命中打破了一些规则:)

<强>更新

当我在本地尝试这个时找到了这个:http://support.microsoft.com/kb/942047/

看起来那些保留的目录会抛出特殊的404,你可能能够让IIS以404.8类型为目标......而没有开放服务于那些目录

答案 2 :(得分:0)

一种方法是在global.asax文件中提供重定向:

 void Application_Error(object sender, EventArgs e) 
{
    //uncomment this to narrow down 'helpful' microsoft messages
    //HttpRequest request = ((HttpApplication)sender).Context.Request; 


    Exception ex = Server.GetLastError();
    //ErrorManager is a custom error handling module
    ErrorManager.ProcessError(ex);
    Response.Redirect("~/error.aspx?error=" + HttpUtility.UrlEncode(ex.Message), true);
}

{侧面说明,我得到了一个我无法追踪的例外 - 它只是说“未找到文件”但没有说明丢失了哪个文件。事实证明,这是一个css文件中的破损图像引用 - 在第二行上面的代码中有助于识别丢失的文件}

答案 3 :(得分:0)

向IIS添加通配符映射以通过ASP.net运行所有请求,然后您可以使用Global.asax来处理错误。

采取from here

  

按照以下步骤使用IIS 6.0创建通配符脚本映射:

     
      
  • 右键单击网站,然后选择“属性”
  •   
  • 选择“主目录”选项卡
  •   
  • 单击“配置”按钮
  •   
  • 选择Mappings选项卡
  •   
  • 单击“插入”按钮(参见图4)
  •   
  • 将aspnet_isapi.dll的路径粘贴到Executable字段中(您可以从.aspx文件的脚本映射中复制此路径)
  •   
  • 取消选中标记为“验证文件存在”的复选框
  •   
  • 单击“确定”按钮
  •