在客户端获取 Web 请求的完整负载之前,我们想首先向它发送一个测量它将获得的响应大小的测量值。如果响应太大,客户端将向用户显示一条消息,让他们选择中止操作。
我们可以编写一些自定义代码来在服务器上预加载响应,确定大小,然后将其传递给客户端,但如果有其他方法可以做到这一点,我们宁愿不这样做。
有谁知道 WCF 是否有任何棘手的方法来做到这一点?或者是否有任何免费的第三方工具可以做到这一点?
谢谢。
我认为 WCF 或 .NET 框架中没有什么“棘手的”可以做到这一点,真的。你把什么传回给客户?一个类的实例?
您可以做的是运行查询或获取响应,然后将其序列化到内存流中,看看它有多大。这不会是一个完全准确的大小 - SOAP 消息有一些开销,例如 SOAP 信封和标头和其他东西 - 但它可以为您提供一个大概的数字,即您是要返回几百个字节,还是一个几兆字节。
麻烦的是:这可能需要在服务器上花费一些时间来组装/查询,然后才能真正“测量”。另外,您几乎必须进行两次调用 - 一次调用“MeasureResult”,返回 Int 或 Long 或其他内容,然后第二次调用“GetResult”以实际获取结果。因此,您将花费两次精力来组合消息....
我真的没有一个很好的答案给你,但也许你只需要想出一些其他方法来让客户在通话时间过长时中止通话。或者找到一种方法来更快地找出响应大小的指标(无需获取响应本身的所有详细信息)。