CreateDataSource WCF DataServices

时间:2011-08-08 05:27:18

标签: wcf-data-services

我似乎无法想象得到我在调用CreateDataSource时在silverlight客户端上填充的自定义标头。我有以下代码:

protected override CaseEntitiesContext CreateDataSource()
{
  return new CaseEntitiesContext(CaseGuid, ConnectionString, Provider)
  {
    DefaultContainerName = "CaseEntitiesContext"
  };
}

我从web.config获取ConnectionString和Provider,但需要从RequestHeader获取CaseGuid。

如果我在构造函数中添加以下代码,或者在CreateDataSource之后的代码中添加代码。

      ProcessingPipeline.ProcessingRequest += (o, args) =>
    {
      CaseGuid = new Guid(args.OperationContext.RequestHeaders["caseguid"]);
      Debug.WriteLine("request case guid:" + args.OperationContext.RequestHeaders["caseguid"]);
      Debug.WriteLine("CaseRequest Processing HTTP {0} request for URI {1} Case Guid {2}",
          args.OperationContext.RequestMethod,
          args.OperationContext.AbsoluteRequestUri,
          args.OperationContext.RequestHeaders["caseguid"]);
    };

我可以在CreateDataSource

获取Request对象的任何想法

FYI:CaseEntitiesContext是一个自定义构造函数,它根据Guid创建EF以确定正确的db目录。

1 个答案:

答案 0 :(得分:0)

答案是使用HttpContext.Current.Request,因为网站托管在标准的asp.net中