如何在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',因为它是 被另一个进程使用。
答案 0 :(得分:1)
首先,请记住并发性和线程安全性。 (许多请求可以同时传递给你的控制器。在这种情况下,如果你正在写som,那么文件 - app的行为可能是错误的)。 如果您没有写入文件(仅读取),那么您可以为其他线程指定共享模式,如下所示:
using(var file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){
//your code goes here
}