有一个Silverlight(4.0)应用程序正在调用WCF服务。在第一次调用WCF服务期间,一些数据来自HttpContext.Current.Session对象。
在第二次调用WCF-service期间,HttpContext.Current为null ...你知道为什么(以及如何解决这个问题)?
当前设置:
服务定义如下所示:
[ServiceContract(Namespace =“”)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
公共类ElitaDataService {
P.S。从WCF服务使用HttpContext的目的是检查: 一个。如果当前用户被记录(该信息存储在Session中); 湾如果用户使用自己的数据(例如,只查看自己的订单详细信息)。
P.P.S。我看到建议使用OperationContext而不是HttpContext,但是不清楚OperationContext中哪些属性有助于解析“a”和“b”项。
请指教,谢谢。
答案 0 :(得分:1)
所以你在web.config中将aspNetCompatibilityEnabled
设置为true,但是你的[ServiceContract]
课程中是否有这个属性?
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
(您可以使用Allowed
或Required
)
仅仅因为托管应用程序允许 asp.net兼容性并不意味着各个服务已启用它。
答案 1 :(得分:0)
这是一个魔术......现在HttpContext.Current在每次请求期间都是非空的...不知道为什么......如果你知道为什么会这样 - 请告诉我。