在asp.net mvc2中怎么设置有错误时导航到指定的页面

xuexiaodong2009
博客专家认证
2011-06-01 01:51:35
在asp.net mvc2中怎么设置有错误时导航到指定的页面

首先声明:配置文件的方式是不行的
<customErrors mode="on"></customErrors>

其次在Global的Application_Error事件处理中某些错误也不会导航到通过Controller控制的错误页面,例如一个连接到PDF文件的链接,在没有PDF文件时,通过Controller没有导航到希望的错误页面。
...全文
540 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
种草德鲁伊 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xuexiaodong2009 的回复:]

引用 12 楼 karascanvas 的回复:

http://msdn.microsoft.com/en-us/library/system.web.mvc.globalfilters%28v=vs.98%29.aspx
MVC3里的?mvc2没有?

[/Quote]

自己去下了个试试,MVC2确实没有。
不过仍然可以把过滤器加在Controller上,不是Action上。
或者让控制器统一派生自一个基类,在基类上加过滤器。



[HandleException]
public class BaseController : Controller { }

public class HomeController : BaseController { }

子夜__ 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xuexiaodong2009 的回复:]

必须使用特性那种方式吗?一百个action,就得给这一百个action都要加上这个错误处理的特性吗?
没有在配置文件里配置一次就可以的简单方法吗?
[/Quote]
MVC3可以自定义

MVC2不知道可不可以集成Form认证
种草德鲁伊 2011-06-01
  • 打赏
  • 举报
回复
mvc2真的没全局过滤器吗
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "HomePage", id = UrlParameter.Optional } // Parameter defaults
//new { controller = "User", action = "Register", id = UrlParameter.Optional } // Parameter defaults
);
protected void Application_Start()
{
MVCControlsToolkit.Core.Extensions.Register();
AreaRegistration.RegisterAllAreas();

RegisterRoutes(RouteTable.Routes);
}
种草德鲁伊 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xuexiaodong2009 的回复:]

引用 12 楼 karascanvas 的回复:

http://msdn.microsoft.com/en-us/library/system.web.mvc.globalfilters%28v=vs.98%29.aspx
MVC3里的?mvc2没有?
[/Quote]

你看看Global.asax 的代码,里面应该就有一个注册全局过滤器的方法。
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 karascanvas 的回复:]

http://msdn.microsoft.com/en-us/library/system.web.mvc.globalfilters%28v=vs.98%29.aspx
[/Quote]MVC3里的?mvc2没有?
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
GlobalFilters.Filters.Add(new .....);

GlobalFilters是哪个对象的属性?
种草德鲁伊 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xuexiaodong2009 的回复:]

必须使用特性那种方式吗?一百个action,就得给这一百个action都要加上这个错误处理的特性吗?
没有在配置文件里配置一次就可以的简单方法吗?
[/Quote]

建一个类继承FilterAttribute并实现IExceptionFilter接口,异常怎么处理,如何返回结果给用户,都可以在IExceptionFilter规定的方法里实现。

把这个类的实例,添加到 全局过滤器中,不是每个Action都给加上这个属性

GlobalFilters.Filters.Add(new .....);
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
必须使用特性那种方式吗?一百个action,就得给这一百个action都要加上这个错误处理的特性吗?
没有在配置文件里配置一次就可以的简单方法吗?
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fengyarongaa 的回复:]

可以在配置文件里面配置

也可以在路由里面写
[/Quote]具体怎么配置啊?
种草德鲁伊 2011-06-01
  • 打赏
  • 举报
回复
ycproc 2011-06-01
  • 打赏
  • 举报
回复
可以在配置文件里面配置

也可以在路由里面写
种草德鲁伊 2011-06-01
  • 打赏
  • 举报
回复
MVC框架提供的全局过滤器是干嘛用的?
叶子 2011-06-01
  • 打赏
  • 举报
回复
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
CSDN里真没有高手吗
xuexiaodong2009 2011-06-01
  • 打赏
  • 举报
回复
楼上的方法在MVC2中不行,在MVC2中的处理过程和以前的完全不一样的
ajq1989 2011-06-01
  • 打赏
  • 举报
回复
在Global中Application_Error事件处理错误信息
在Global中
protected void Application_Error(Object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string error = "发生异常页: " + Request.Url.ToString() + "<br>";
error += "异常信息: " + objErr.Message + "<br>";
Server.ClearError();
Application["error"] = error;
Response.Redirect("~/ErrorPage/MyErrorPage.aspx");
}
Web.config中
<customErrors mode="On"/>
<authentication mode="Windows"/>
注:(Response.Redirect语句在任何情况下都会产生ThreadAbortException异常,但不捕获该异常并不会引起程序中止。如果不设置mode="On",在Application_Error事件会捕获它的异常,中并又回到该过程本身,所以会引起死循环。

Response.Redirect("~/ErrorPage/MyErrorPage.aspx",false);这样写的话,mode="On",应该不用设)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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