网站在Global.asax中写的Application_Error(),在目录层次超过三层后无法拦截错误?

絔颵柒 2017-04-11 02:22:20
 protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpException && ((HttpException)ex).GetHttpCode() == 404)
{
string[] path = Request.Url.LocalPath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries); ;
Regex regex = new Regex(@"^[A-Za-z0-9]+$");
if (path.Length > 1 || path[0].Length < 3 || !regex.IsMatch(path[0]))
{
//不区分大小写、判断是否包含异常字符
string path2 = "~/Page404.html";
Response.Redirect(path2);

}
else
{
Server.Transfer("Page404.html");
}
}
}


目录层级三层内可以正常跳转.....
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
絔颵柒 2017-04-17
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
[quote=引用 2 楼 qq_32852229 的回复:] [quote=引用 1 楼 wc_ling 的回复:] 应该路径问题,你可以把你的404页面改成绝对路径试试~!
是根本捕捉不到404错误....和后面的路径无关[/quote] 什么叫做“捕捉到404错误”? 你是不是看这个代码中写着有两个“Page404.html”,就蒙到这里啦?!你遇到的的 404 跟这个贴出来的代码具体有什么关系,怎么设计的,请说明一下。[/quote] 这方法都是我写的,两个404页面是用来测试的,只是为了测试错误url捕捉问题,在url链接层次三层内,例如:ss/ss/ss是可以捕捉的,但是超过三层,例:ss/ss/ss/ss这样的url就捕捉不到
絔颵柒 2017-04-17
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
你所说的“目录层级三层内可以正常跳转”,假设你是一个最基本、最初的 asp.net (没有路由设置)会不会跑到这里,自己可以试一下。
抱歉,之前一直没人回复,所以没有上来查看
絔颵柒 2017-04-17
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
你所说的“目录层级三层内可以正常跳转”,假设你是一个最基本、最初的 asp.net (没有路由设置)会不会跑到这里,自己可以试一下。
这是一个MVC项目,我想要做的是在路由里面捕捉映射找不到路径的地址,正常页面是可以映射成功的。在错误url里面也有区分,特殊规则的url在捕捉后会转到正确的页面,只有不符合规则的地址会转到404页面。现在的问题是Application_Error方法可以捕捉错误,可以进断点,但这种捕捉是有限制的,在网站地址输入层级超过三级就无法捕捉断点,具体原因我不知道。目前是通过Application_AuthenticateRequest方法捕捉每一次操作然后截取当前url判断,这样就能捕捉到每一次操作。当然这种方法不管什么操作都会走一次,所以可能影响整体效率
  • 打赏
  • 举报
回复
你所说的“目录层级三层内可以正常跳转”,假设你是一个最基本、最初的 asp.net (没有路由设置)会不会跑到这里,自己可以试一下。
  • 打赏
  • 举报
回复
引用 2 楼 qq_32852229 的回复:
[quote=引用 1 楼 wc_ling 的回复:] 应该路径问题,你可以把你的404页面改成绝对路径试试~!
是根本捕捉不到404错误....和后面的路径无关[/quote] 什么叫做“捕捉到404错误”? 你是不是看这个代码中写着有两个“Page404.html”,就蒙到这里啦?!你遇到的的 404 跟这个贴出来的代码具体有什么关系,怎么设计的,请说明一下。
  • 打赏
  • 举报
回复
你的第一行设置断点能调试吗?贴出来看看你调试的画面。 如果都不能调试到,说明你贴的东西完全跟这个 404 无关。那么你贴它没有什么意义啊。
絔颵柒 2017-04-12
  • 打赏
  • 举报
回复
有没有大神解答一下????
絔颵柒 2017-04-11
  • 打赏
  • 举报
回复
引用 1 楼 wc_ling 的回复:
应该路径问题,你可以把你的404页面改成绝对路径试试~!
是根本捕捉不到404错误....和后面的路径无关
wc_ling 2017-04-11
  • 打赏
  • 举报
回复
应该路径问题,你可以把你的404页面改成绝对路径试试~!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧