我需要在服务器端(WCF)上创建一个端点,该端点将接受来自客户端的包含标头的请求:
Content-Type : application/json
Content-Encoding : gzip
Accept-Encoding : gzip
在不实现自定义MessageEncodingBindingElement的情况下是否可以完成? 像这样:
<customBinding>
<binding name="gzipbinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<webMessageEncoding />
<httpTransport/>
</binding>
</customBinding>
但是它会引发异常,因为绑定堆栈只能包含一个encodingBindingElement。
答案 0 :(得分:0)
是的,自定义绑定中仅允许一个编码绑定元素。我认为,我们可以通过以下方法实现您想要的。 首先,定义包括BinaryMessageEncoding的自定义绑定,并将compressionformat设置为Gzip。
const data = {"0":["AAPL",0.378571,"2012-09-30"],"1":["AAPL",0.378571,"2012-12-31"],"2":["AAPL",0.378571,"2013-03-31"],"3":["AAPL",0.435714,"2013-09-30"],"4":["AAPL",0.435714,"2013-12-31"],"5":["AAPL",0.47,"2014-09-30"],"6":["AAPL",0.47,"2014-12-31"],"7":["AAPL",0.52,"2015-06-30"],"8":["AAPL",0.52,"2015-09-30"],"9":["AAPL",0.52,"2015-12-31"]};
const dividends = Object.assign({}, Object.values(data)
.filter(([,,d], i, _, a = new Date(d)) =>
!_.some(([,,e], i, _, b = new Date(e)) =>
b.getFullYear() === a.getFullYear()
&& b.getMonth() > a.getMonth()
&& b.getDate() >= a.getDate()
)
));
console.log(dividends);
然后,使用JSON字符串作为要传递的参数。
<binaryMessageEncoding compressionFormat="GZip">
然后客户端通过反序列化参数来获取值。
JsonConvert.SerializeObject(person);
必须注意的是,在某些特定情况下,我们应避免json序列化,因为使用json序列化和反序列化对象需要时间和资源(cpu,RAM)。