如何在api中配置文件流?

时间:2016-09-08 13:13:44

标签: c# garbage-collection asp.net-web-api2

如何在api中配置文件流?

假设我需要调用此api 10次。

[HttpGet("{fileName}")]
public async Task<IActionResult> Get(string fileName)
{
   var res = File.Open(path, FileMode.Open);
   var file = File(res, "application/zip", fileName);
   return file;
}

我无法在从api方法返回之前处理流。

当我第二次打电话时,我会得到例外:

  

该进程无法访问文件'C:\ test \ example.zip',因为它是   被另一个进程使用。

1 个答案:

答案 0 :(得分:1)

首先,请记住并发性和线程安全性。 (许多请求可以同时传递给你的控制器。在这种情况下,如果你正在写som,那么文件 - app的行为可能是错误的)。 如果您没有写入文件(仅读取),那么您可以为其他线程指定共享模式,如下所示:

using(var file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){
   //your code goes here
}