2016-03-04 36 views
-1

最新的jsonServiceClient(4.0.54)在每个同步GET请求(以及可能的POSTS)后都会打开句柄。jsonServiceClient中的内存(句柄)泄漏

我的猜测是,它就像身体的流一样,如果未读,仍然保持打开状态,并慢慢地磨我们的测试停下来。假设它是我们自己的代码,我们在浪费一整天后没有进一步追踪它:/

尽管处理客户端,但运行10000次提取循环会显着降低我们的测试。

这不会发生异步获取。

+0

这实际上不是一个问题。这是一个错误报告。我建议在这里张贴https://forums.servicestack.net/或联系[email protected] – Scott

+0

服务客户端[处理RequestStream](https://github.com/ServiceStack/ServiceStack/blob/ 8f527da7a669a60cca14e9b4bccd5a4da634ed62/src/ServiceStack.Client/ServiceClientBase.cs#L755)在每次请求后,如果你有一个repro请把它提交给[ServiceStack Issues](https://github.com/ServiceStack/Issues)。 – mythz

+0

注意:如果你的[客户访问原始响应](https://github.com/ServiceStack/ServiceStack/wiki/C%23-client#accessing-client-raw-responses),你需要处理'一旦你完成了使用,你可以在呼叫地点使用Stream或HttpWebResponse。 – mythz

回答

3

此问题在ServiceStack Customer Forums thread中标识为未处理HttpWebResponse响应。这个问题可以通过在using{}声明中调用它来解决,例如:

using (HttpWebResponse webRes = client.Get(requestUri)) { 
    byte[] bytes webRes.GetResponseStream().ReadFully(); 
    string str = bytes.FromUtf8Bytes(); 
}