我对流和 Web api 有疑问。
我返回 web api 使用的流。目前,我在获取流后将套接字放入池中。但这会导致一些错误。
现在,我必须在请求结束后将套接字放入池中。(流已被消耗,现在已关闭)。
这个或其他一些最佳实践是否有代表?
示例代码:
public HttpResponseMessage Get(int fileId)
{
HttpResponseMessage response = null;
response = new HttpResponseMessage(HttpStatusCode.OK);
Stream s = GetFile(id);
response.Content = new StreamContent(fileStream);
}
GetFile(int id)
{
FSClient fs = GetFSClient();
Stream s = fs.GetFileStream(id);
AddFSToPool(fs);
return s;
}
GetFile 使用自编程的 FileServer-Client。它有一个重用 FileServer-Connections 的选项。此连接将存储在池中。(池中只有未使用的 FileServer 连接)。如果下一个请求调用 GetFSClient() 它会从池中获取一个已连接的请求(并将其从池中删除)。
但是,如果另一个请求进来并使用池中的 FileServer-Connection(因为未使用),则仍然存在问题,即 Stream 可能正在使用中。
现在我想在请求结束并且流被完全消耗后执行“将 FSClint 放入池中”。
有没有一个切入点?