当要求在动作API中创建文件夹时,是否会涉及任何并发问题?如果是这样,正确的解决方案是使用锁,如下面的代码
public async Task<IActionResult> UploadFile(User user){
...
var file = HttpContext.Request.Form.File["SomeFile"];
...
var path = Path.Combile(hostingEnvironment.WebRoot, configurationRoot["BaseDirectory"], user.Id);
lock(path){
if(!Directory.Exists(path)){
Directory.CreateDirectory (path);
}
}
...
}
使用path
变量作为锁定对象也是合乎逻辑的吗?
答案 0 :(得分:5)
只需致电Directory.CreateDirectory
,不要强调并发性。
来自文档(https://msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspx) :
如果目录已存在,则此方法不会创建新目录 目录,但它返回现有的DirectoryInfo对象 。目录