读书人

ASP.NET MVC 路由选择有关问题大家各

发布时间: 2013-09-06 10:17:17 作者: rapoo

ASP.NET MVC 路由选择问题,大家各抒己见
我重写了IRouteHanlder, IHttpHandler, 但是MyHttpHanlder中的ProcessRequest方法就是不被触发。

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

//routes.MapRoute(
// "DefaultTT", // Route name
// "test", // URL with parameters
// new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
//);

RouteValueDictionary defaults = new RouteValueDictionary();
RouteValueDictionary constraints = new RouteValueDictionary();
RouteValueDictionary tokens = new RouteValueDictionary();

defaults.Add("controller", "home");
defaults.Add("action", "index");
defaults.Add("data", string.Empty);
constraints.Add("data", @"[a-zA-Z0-9\-]*");
tokens.Add("pageId", 0);

routes.Add(new Route("", defaults, constraints, tokens, new MyRouteHandler()));
}

protected void Application_Start()


{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}

public class MyRouteHandler : IRouteHandler
{

public System.Web.IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestContext)
{
return new MyMVCHanlder(requestContext);
}
}

public class MyMVCHanlder : MvcHandler
{
public MyMVCHanlder(RequestContext requestContext)
: base(requestContext)
{

}

protected override void ProcessRequest(HttpContext httpContext)
{
int i = 1;
int j = i + 1;
base.ProcessRequest(httpContext);
}


protected override void ProcessRequest(HttpContextBase httpContext)
{
int i = 1;
int j = i + 1;


base.ProcessRequest(httpContext);
}
}
}



浏览器中输入http://localhost:3359/, 断点调试,发先调用了MyHttpHandler构造方法,说明new了这样一个实例。可是我重写的ProcessRequest方法,怎么就不被调用呢?大家说说想法,谢谢。

读书人网 >asp.net

热点推荐