.net 是否可以从WCF IDataContractSurrogate实现中读取请求头?

.net 是否可以从WCF IDataContractSurrogate实现中读取请求头?,.net,wcf,web-services,rest,.net,Wcf,Web Services,Rest,我有一个正在发展中的职业。我公开了一个不具有可序列化类型的协定,因此我使用DataContractSurrogate(的实现)来创建可以使用序列化的代理 我的问题是,如何访问DataContractProgate类中的请求/响应头 在服务中,只需使用即可,在客户机中,可以在对象范围内访问该对象,该对象可以通过引用当前WCF通道()创建 如果我能够在中获得对WCF频道的引用,我可以创建一个链接,但我也不确定如何做到这一点 有什么想法吗 @casperOne: 我想在DataContractSur

我有一个正在发展中的职业。我公开了一个不具有可序列化类型的协定,因此我使用DataContractSurrogate(的实现)来创建可以使用序列化的代理

我的问题是,如何访问DataContractProgate类中的请求/响应头

在服务中,只需使用即可,在客户机中,可以在对象范围内访问该对象,该对象可以通过引用当前WCF通道()创建

如果我能够在中获得对WCF频道的引用,我可以创建一个链接,但我也不确定如何做到这一点

有什么想法吗


@casperOne
我想在DataContractSurrogate实现中获取头值,因为要从代理转换为目标类型,我需要引用工厂对象单例池中的一个条目

大概是这样的:

SingletonFactoryPool.Factories[factoryIdFromHeader].CreateTargetType(surrogateValues);

由于其他原因,我已经在头中传递了我需要的数据,如果我可以从头中读取值,看起来会更干净。不过,您的观点是正确的,我可以轻松地在代理中传递相同的数据。

如果您需要访问数据契约中的通道,我会说您的类设计不正确。您的契约应该是自包含的,并且不依赖于通过通道传递消息时使用的头值

您总是可以创建一个扩展(有很多地方可以这样做),它将获取反序列化实例,然后向其添加需要添加的头信息


当然,您也可以创建一个单独的对象,它是反序列化实例(通过参数传递)和标题信息的混合体。

更新了文章,进一步澄清了我为什么要在IDataContractSurrogate实现中访问标题。我的答复是渴望得到评论