标签:忽略 visual 区别 项目 image inf otf 图片 time
在ASP.NET Web开发练习中,想要完成上传文件的功能:
代码为:
View:
1<form method="post" asp-controller="Register" asp-action="SetIcon" enctype="multipart/form-data"> 2 <input name="file" type="file" accept="image/*"/> 3 <button type="submit">提交</button> 4</form>
Action:
[HttpPost] public IActionResult SetIcon(IFormFile file) { string path=Path.Combine(Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName, DateTime.Now.Year.ToString(), DateTime.Now.Month.ToString(),file.FileName); Stream stream = new FileStream(path, FileMode.Create, FileAccess.Write); file.CopyTo(stream); Return Redirect("");
}
尝试过程中在创建Stream实例时抛出异常,System.IO.DirectoryNotFoundException:"" is denie;
2017VisualStudio,项目为.NET Core 2.1,MVC
查了很多资料,做一个总结:
1、这个是解决了我的问题的:在文件夹的属性-安全中编辑,添加用户“Network Service”,并设置相应权限;期间尝试过添加“Everyone”,发现没用。
2、容易被忽略的问题:代码中FileStream在创建的时候,path应该是文件的路径,而不是目录;
3、权限管理的相关类和方法:
这一部分应该不是根源性的问题,只是因为感觉Core和Framework的这一块的区别有点大,整理一下
//FileIoPermission
FileIOPermission iOPermission = new FileIOPermission(PermissionState.Unrestricted); iOPermission.AddPathList(FileIOPermissionAccess.AllAccess, path);
//DirectorySecurity;SetAccessControl扩展方法
DirectoryInfo directoryInfo = new DirectoryInfo(path); DirectorySecurity directorySecurity = new DirectorySecurity(); directorySecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow)); directoryInfo.SetAccessControl(directorySecurity);
4、其他解决异常的方法:以管理员身份运行项目以及关于程序池的用户等。
.NET Core 2.1 Web 上传文件 关于System.IO.DirectoryNotFoundException
标签:忽略 visual 区别 项目 image inf otf 图片 time
原文地址:https://www.cnblogs.com/nnnzx/p/11971203.html