Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net RequestContext.RoutedData.Route vs Page.RoutedData.Route_Asp.net_Routes - Fatal编程技术网

Asp.net RequestContext.RoutedData.Route vs Page.RoutedData.Route

Asp.net RequestContext.RoutedData.Route vs Page.RoutedData.Route,asp.net,routes,Asp.net,Routes,我正在构建一个高流量的asp.net webforms网站。我已将类中的所有URL组件化。在查找请求的当前路由时,什么是最有效的?调用HttpContext.Current.Request.RequestContext.RoutedData.Route或将Page.RoutedData.Route发送到方法中,以检查我们是否处于某个路由url。例如: public static bool IsCurrentRoute(string routeName) { va

我正在构建一个高流量的asp.net webforms网站。我已将类中的所有URL组件化。在查找请求的当前路由时,什么是最有效的?调用HttpContext.Current.Request.RequestContext.RoutedData.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中并使用它

这里可以找到一个例子,请看

new HttpContextWrapper(HttpContext.Current)

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中并使用它

这里可以找到一个例子,请看

new HttpContextWrapper(HttpContext.Current)

谢谢事实上,包装httpcontext是一个很好的建议——已经得到了这个建议,但希望在示例中澄清httpcontext.Current。干杯谢谢事实上,包装httpcontext是一个很好的建议——已经得到了这个建议,但希望在示例中澄清httpcontext.Current。干杯