【发布时间】:2009-02-09 01:18:45
【问题描述】:
我有一个RESTful service,正在WCF 中开发。我正在公开一个没有可序列化类型的合同,因此我使用 DataContractSurrogate(IDataContractSurrogate 的实现)来创建可以使用 DataContractSerializer 序列化的代理项。
我的问题是,如何在我的 DataContractSurrogate 类中访问请求/响应标头?
在服务中,只需使用WebOperationContext 即可,在客户端中,可以在OperationContextScope 对象的范围内访问相同的WebOperationContext,该对象可以通过引用当前WCF 通道(IContextChannel )。
如果我能够在IDataContractSurrogate.GetDeserializedObject 中获得对 WCF 通道的引用,我可以创建一个 OperatoinContextScope,但我也不知道该怎么做。
有什么想法吗?
@casperOne:
我想在 DataContractSurrogate 实现中获取标头值,因为要将代理项转换为目标类型,我需要引用工厂对象单例池中的条目。
类似这样的:
SingletonFactoryPool.Factories[factoryIdFromHeader].CreateTargetType(surrogateValues);
由于其他原因,我已经在标题中传递了我需要的数据,如果我可以从标题中读取值,似乎会更干净。你的观点是有效的,我可以很容易地在代理中传递相同的数据。
【问题讨论】:
标签: .net wcf web-services rest