在这个提取代码(从ShoppingCartascxvb)中进行相同的测试两次调用之间存在细微的区别第一次使用HttpContextCurrent对象
If HttpContextCurrentUserIsInRole(FanClubMember) Then
…
而第二次调用使用Context对象
If ContextUserIsInRole(FanClubMember) Then
…
在本章的上下文中并不真正需要担心两次方法调用之间的区别因为实际调用的方法是相同的然而万一您具有更为好奇的本性下面将继续介绍这一点
在第一种情况中因为代码存在于单独的类文件中(而不是aspx页面或ascx用户控件的代码无关文件)在Web环境的外部理论上可以由不同的应用程序完整地调用该代码当用户请求Web页面时他们在某个上下文中这样做该上下文将随用户进行的请求一起包含少量信息Web服务器将理解这些信息如果用户是匿名的则服务器将知道当前的上下文代表一个匿名用户如果用户已经登录这些少量信息可指示请求来自于经过身份验证的用户因此已登录用户的上下文声明请求来自于特定的用户ID> ASPNET可询问该用户ID以找出该用户属于哪个角色
当前的上下文可自由地用于Web页面和用户控件但在编译类之前需要告诉其更多的信息在Web页面上实际使用的上下文是HTTP请求的当前上下文因此类需要具有上下文的HttpContextCurrent版本而不是可用于Web页面的所有请求的上下文
ASPNET 入门教程完整版
[] []