【发布时间】: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