【问题标题】:Access to request HTTP headers in custom WCF MessageEncoder访问自定义 WCF MessageEncoder 中的请求 HTTP 标头
【发布时间】:2010-01-02 22:14:52
【问题描述】:

有谁知道如何在 MessageEncoder.ReadMessage 方法中访问请求 HTTP 标头? 似乎 WCF 在调用 ReadMessage 方法时已经“知道”请求标头,至少是 Content-Type 和 Content-Length,但我无法访问 Content-Encoding 标头。

基本上,我正在尝试对 WCF 服务 (http://msdn.microsoft.com/en-us/library/ms751458.aspx) 使用 gzip 解压缩/压缩,并想检查传入请求是否需要解压缩。为此,我想检查 Content-Encoding 标头,但无法弄清楚从哪里获得它。 有什么想法吗?

谢谢!

【问题讨论】:

  • 我发现的一个可能的解决方案(它至少适用于 json/xml 绑定)是基于 http 传输/编码层不会立即提取整个消息的想法,所以我创建了 MessageProxy推迟底层消息的解压/创建,直到有人尝试检查消息正文。此时,所有请求标头都可以访问。如果有人感兴趣,我可以在某处提交示例代码。

标签: wcf gzip wcf-binding encoder gzipstream


【解决方案1】:

Here's an answer 我在另一个线程中给出了解释您需要如何通过另一个IOperationBehavior 中的WebOperationContext 操作标头,该IOperationBehaviorMessageEncoder 相结合。

【讨论】:

  • 感谢您的回复。我了解 WebOperationContext 和 IOperationBehavior 如何帮助设置 outcoming 消息的 Content-Encoding 标头,但我无法弄清楚任何服务、端点或操作范围的行为如何有助于访问 传入消息头。
  • 是的 WebOperationContext 和 OpeationContext 对于传入的请求都是空的
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2014-08-08
  • 2011-03-04
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多