这两个HttpContext.Current.Session和Session-asp.net4.0有什么区别这两段代码的区别。HttpContext.Current.Session["myvariable"]Session["myvariable"]asp.net4.0和C#4.0它们实际上是一样的,因为它们会访问相同的Session数据。您可以在代码隐藏中调用Session的原因是因为ASP.Net页面默认扩展System.Web.UI.Page类型。这有一个会话公共属性。如果您查看Reflector中的代码,您会发现它只是调用HttpContext.Current.Session本身(通过它自己的Context属性)。在其他类中,您将无权访问该属性,但只要您在Web应用程序的上下文中运行,就可以使用HttpContext.Current.Session访问会话数据。在标准情况下,它们是相同的。不同之处在于,第一条语句也适用于静态上下文,例如WebMethod。他们是不同的。第二个(Session)是许多.NET对象的属性,例如Page。因此,您不能在这些对象的构造函数中访问它。但是,第一个(HttpContext.Current.Session)始终准备就绪并可以使用(当然是在会话加载到请求处理管道之后)。没有不同。Page.Session返回HttpContext.Current.Session话虽如此,我将.dll编写为Web应用程序的扩展。这些.dll没有会话概念。在这些情况下,我可以通过引用HttpContext.Current.Session使用我的.dll访问Web应用程序的当前会话。没有不同。他们是一样的东西;第二种形式更短:)行为没有区别。如果您在HttpContext不能直接使用的自定义类中使用代码并且想要访问会话值,那么我们在访问页面或控件类时使用第一行代码和第二行代码。NicholasCarey的另一个非常详尽的回答https://stackoverflow.com/a/6021261/365017“HttpApplication的Session属性表现出与缩放HttpContext.Current.Session不同的行为。如果HttpSessionState实例可用,它们都将返回对相同的HttpSessionState实例。当没有HttpSessionState实例可用时,它们的行为不同。当前要求。并非所有HttpHandler都提供会话状态。为此,HttpHandler必须实现[一个或两个?]标记接口IRequiresSessionState或IReadOnlySessionState...HttpContext。如果没有会话可用,Current.Session只会返回null。HttpApplication的Session属性的实现会抛出一个HttpException并在此上下文中提供消息Session状态。而不是返回一个null引用。”以上就是C#学习教程:HttpContext.Current.Session和Session这两个有什么区别-asp.net4.0的所有内容分享,如果对大家有用需要了解更多C#学习教程,希望大家多多关注——本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
