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)