是否有确定WCF响应大小的内置方法?

是否有确定WCF响应大小的内置方法?,wcf,preload,Wcf,Preload,在客户端获得web请求的全部有效负载之前,我们希望首先向它发送一个它将获得的响应大小的度量。如果响应太大,客户端将向用户显示一条消息,让用户选择中止操作 我们可以编写一些自定义代码在服务器上预加载响应,确定大小,然后将其传递给客户机,但如果有其他方法,我们不希望这样做 有人知道WCF是否有任何巧妙的方法来做到这一点吗?或者有没有免费的第三方工具可以实现这一点 谢谢。我真的不认为WCF或.NET框架中有什么“棘手”的东西可以做到这一点。你要把什么传回给客户?一个类的实例 您可以做的是运行查询或以任

在客户端获得web请求的全部有效负载之前,我们希望首先向它发送一个它将获得的响应大小的度量。如果响应太大,客户端将向用户显示一条消息,让用户选择中止操作

我们可以编写一些自定义代码在服务器上预加载响应,确定大小,然后将其传递给客户机,但如果有其他方法,我们不希望这样做

有人知道WCF是否有任何巧妙的方法来做到这一点吗?或者有没有免费的第三方工具可以实现这一点


谢谢。

我真的不认为WCF或.NET框架中有什么“棘手”的东西可以做到这一点。你要把什么传回给客户?一个类的实例

您可以做的是运行查询或以任何方式获取响应,然后将其序列化到内存流中,并查看它有多大。这并不是一个完全准确的大小——SOAP消息有一些开销,比如SOAP信封、头等等——但它可以给你一个大概的数字,告诉你是要返回几百字节还是几兆字节

问题是:这可能需要一段时间在服务器上组装/查询,然后实际“测量”。另外,您几乎需要进行两次调用—一次调用“MeasureResult”,返回Int或Long或其他值,然后第二次调用“GetResult”以实际获得结果。因此,您将花费两次精力来组合消息


我真的没有一个好的答案给你,但也许你只需要想出一些其他的方法,让客户中止呼叫,如果它需要太长的时间。或者找到一种更快速地计算出响应大小的指标的方法(不需要获得响应本身的所有细节)。

所有这些都是很好的建议。我们最终完全避免了这个问题,如果数据下载时间超过n秒,我们就在UI端弹出一条消息给用户。这不是最健壮的解决方案,但显然比编写一堆服务器端代码要容易得多,因为这些代码会进一步降低过程的速度,并最终提供近似值。