第二个请求期间WCF服务中的HttpContext.Current

时间:2010-07-02 01:51:13

标签: .net asp.net wcf silverlight silverlight-4.0

有一个Silverlight(4.0)应用程序正在调用WCF服务。在第一次调用WCF服务期间,一些数据来自HttpContext.Current.Session对象。

在第二次调用WCF-service期间,HttpContext.Current为null ...你知道为什么(以及如何解决这个问题)?

当前设置:

  1. 选项“aspNetCompatibilityEnabled”和“runAllManagedModulesForAllRequests”在web.config中设置为true,
  2. 服务定义如下所示:

    [ServiceContract(Namespace =“”)]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

    公共类ElitaDataService {

  3. P.S。从WCF服务使用HttpContext的目的是检查: 一个。如果当前用户被记录(该信息存储在Session中); 湾如果用户使用自己的数据(例如,只查看自己的订单详细信息)。

    P.P.S。我看到建议使用OperationContext而不是HttpContext,但是不清楚OperationContext中哪些属性有助于解析“a”和“b”项。

    请指教,谢谢。

2 个答案:

答案 0 :(得分:1)

所以你在web.config中将aspNetCompatibilityEnabled设置为true,但是你的[ServiceContract]课程中是否有这个属性?

[AspNetCompatibilityRequirements(RequirementsMode =
    AspNetCompatibilityRequirementsMode.Allowed)]

(您可以使用AllowedRequired

仅仅因为托管应用程序允许 asp.net兼容性并不意味着各个服务已启用它。

答案 1 :(得分:0)

这是一个魔术......现在HttpContext.Current在每次请求期间都是非空的...不知道为什么......如果你知道为什么会这样 - 请告诉我。