使用此代码:
DirectoryInfo info = new DirectoryInfo("\\s01\sharedfolder\folder");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
我得到System.UnauthorizedAccessException
:
访问路径' \ s01sharedfolder \ folder'被拒绝。
System.UnauthorizedAccessException:访问路径' \ s01 \ sharedfolder \ folder'被拒绝。
On' s01'我已Everyone
完全控制sharedfolder
。我还将该共享文件夹的所有者设置为everyone
。
.net应用程序的应用程序池的标识设置为LocalSystem
,我也尝试使用本地管理员作为标识。
无论我尝试什么,我都会得到这个例外。我需要做些什么来解决这个问题?
编辑: 我也尝试创建一个符号链接,但这给出了相同的异常
答案 0 :(得分:1)
LocalSystem仅在本地计算机上有效。如果共享位于另一台计算机上,那么您将获得此异常。
可能值得为您的站点设置一个专用帐户(IIS池),并授予网络资源所需的权限(如果使用Windows身份验证,则为文件共享和数据库),并且是您站点的本地权限( ala本地文件系统)。
当作为系统运行时,您只能获得该本地计算机的管理员权限(我认为)。
答案 1 :(得分:0)
使用File.OpenRead可能是预期的行为,而不是权限问题。 File.OpenRead尝试在本地计算机中打开具有该名称的文件。大多数情况下,文件位于服务器中,而不位于本地(客户端)计算机中。因此,无论为该文件夹分配了什么权限,它都将失败。请尝试使用InputStream。示例:
String fileToUpload = FileUpload2.PostedFile.FileName;
long contentLength = FileUpload2.PostedFile.InputStream.Length;
byte[] buffer = new byte[contentLength];
FileUpload2.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);
FileUpload2.PostedFile.InputStream.Read(buffer, 0, Convert.ToInt32(contentLength));
Stream stream = new MemoryStream(buffer);
来源:System.UnauthorizedAccessException occurred in mscorlib.dll