请求上下文路由数据路由与页面路由数据路由



im正在构建一个高流量的asp.net webforms网站。我已经将一个类中的所有url组件化了。当查找请求的当前路径时,什么是最有效的?调用HttpContext.Current.RequestContext.RouteData.Route或将Page.RouteDData.Route发送到检查我们是否在某个路由url的方法中。示例:

    public static bool IsCurrentRoute(string routeName)
    { 
        var route = HttpContext.Current.Request.RequestContext.RouteData.Route;
        if (route == System.Web.Routing.RouteTable.Routes[routeName])
            return true;
        return false;
    }

Page.Routedata只是围绕Context.Routedata.进行包装

取自JustDecompile

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public RouteData RouteData
{
    get
    {
        if (base.Context != null && base.Context.Request != null)
        {
            return base.Context.Request.RequestContext.RouteData;
        }
        return null;
    }
}

所以,回答你的问题——没有区别。尽管由于空检查,如果使用Page方法,则不太可能出现异常。尽管你的上下文多久会为空是另一个问题,如果你认为它有潜力的话,这可能是你想为自己设计的一个案例。

另外,与其直接访问HttpContext.Current,不如考虑将其封装在HttpContextBase中并使用它。

这里有一个例子http://www.agileatwork.com/bolt-on-multi-tenancy-in-asp-net-mvc-with-unity-and-nhibernate/看看的线路

new HttpContextWrapper(HttpContext.Current)

最新更新