【发布时间】:2011-03-10 22:06:25
【问题描述】:
有一个 Silverlight (4.0) 应用程序正在调用 WCF 服务。在第一次调用 WCF 服务期间,一些数据是从 HttpContext.Current.Session 对象获取的。
在第二次调用 WCF 服务期间,HttpContext.Current 为空...您知道为什么(以及如何解决)吗?
当前设置:
- 选项“aspNetCompatibilityEnabled”和“runAllManagedModulesForAllRequests”在 web.config 中设置为 true,
-
服务定义如下:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
公共类 ElitaDataService {
附:从 WCF 服务使用 HttpContext 的目的是检查: 一种。如果当前用户已登录(此信息存储在 Session 中); 湾。如果用户使用自己的数据(例如,仅查看自己的订单详细信息)。
P.P.S.我看到建议使用 OperationContext 代替 HttpContext,但不清楚 OperationContext 中哪些属性有助于解析项目“a”和“b”。
请指教,谢谢。
【问题讨论】:
-
WCF 不是 HTTP 也不是 ASP.NET - 你需要从 HttpContext 得到什么?在 WCF 中,您应该改用
OperationContext。 -
感谢您的建议,但我不知道如何使用 OperationContext 检查所需的内容(请参阅更新的原始问题)。
-
不要使用 HttpContext。虽然 WCF 被设计为与协议和主机无关,但创建一个只能通过 HTTP 和 ASP.NET 使用的服务并没有错。使用 HttpContext 并没有做错任何事情。
-
Samuel,我也有同样的想法:所以问题是:为什么 HttpContext.Current 对于第二个请求为空?你有什么主意吗?谢谢。
标签: .net asp.net wcf silverlight silverlight-4.0