2011-09-30 74 views
5

我有一个使用.NET 4.0在C#中编写的RESTful WCF Web服务,我希望使用GZip或deflate来压缩响应。 (我可能也需要支持压缩请求,但这还不是要求)。它将被部署为Windows服务,即自托管的WCF服务,因为IIS托管不是一种选择。如何在自托管的RESTful WCF Web服务中启用GZip压缩?

我的搜索到目前为止已经很短​​了。大多数命中既可以用于在IIS中启用压缩,也可以为基于SOAP的服务编写自定义消息编码器,既不符合我的方案也不符合我的方案。

如果您有任何指导如何做到这一点,将不胜感激!

回答

1

如果您想在自托管的场景中进行GZip压缩,您真的需要使用自定义编码器路由(示例代码为http://msdn.microsoft.com/en-us/library/ms751458.aspx)(在4.5上,它似乎支持对二进制编码进行压缩,根据MSDN WCF Forums的公告,但它不是4.0的开箱即用)。为什么自定义编码器不适用于您的场景?

+0

感谢您立即回复。我不确定自定义编码器是不是要走的路,但您链接的示例是一个SOAP服务,我不太确定如何修改它适用于WCF RESTful服务。我会再看看它。 –

+0

您可以创建一个GZipMessageEncodingBindingElement的实例,将一个现有的编码绑定元素传递给它 - 如果您传递了WebMessageEncodingBindingElement(不用于SOAP),那么使用GZip的端点也不会使用SOAP。 – carlosfigueira