我正在尝试对我的 WCF 消息的内容进行 gzip 编码。我看到的大多数示例都在谈论拥有 BindingElement 和 MessageEncodingFactory。
在 IDispatchMessageInspector 的 BeforeSendReply 中执行此操作是否有任何副作用?即,我接受消息,将其压缩并替换原始消息。
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
HttpResponseMessageProperty httpResponseProperty = new HttpResponseMessageProperty();
httpResponseProperty.Headers.Add(HttpResponseHeader.ContentEncoding, "gzip");
reply.Properties[HttpResponseMessageProperty.Name] = httpResponseProperty;
reply = gzip(reply);
}
gzip 是提取(xml)主体并将其替换为压缩字节流的功能。
我正在寻找类似的东西
- 不!那会杀死你的服务器。
- 不,这会破坏比 x 更长的消息。
- 这不是一个好主意,因为客户端会将其视为带有随机字节序列的消息,而不是 gzip 压缩消息。
- 是的,这行得通。而且对性能的影响不会那么大。
谢谢各位!