在哪里可以为我的应用程序中的目录设置自定义错误,例如App_Code,App_Browsers等?我已经在web.config中配置了customErrors,并且按预期工作。例如,
http://www.mysite.com/bla.aspx>重定向到404页
但
http://www.mysite.com/App_Code/>显示“系统找不到指定的文件。”
我的网站没有物理App_Code目录。这是我可以在IIS中更改的内容吗?
答案 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文件的脚本映射中复制此路径)
- 取消选中标记为“验证文件存在”的复选框
- 单击“确定”按钮