上传文件的时候报被拒绝访问或报未知标识错误的解决方案
1.首先你要给你要操作的文件赋予权限? 方法如下
?//添加权限
??????? public void addpathPower(string pathname, string username, string power)
??????? {
??????????? DirectoryInfo dirinfo = new DirectoryInfo(pathname);
??????????? if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0)
??????????? {
??????????????? dirinfo.Attributes = FileAttributes.Normal;
??????????? }
??????????? //取得访问控制列表
??????????? DirectorySecurity dirsecurity = dirinfo.GetAccessControl();
??????????? switch (power)
??????????? {
??????????????? case "FullControl":
??????????????????? dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
??????????????????? break;
??????????????? case "ReadOnly":
??????????????????? dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow));
??????????????????? break;
??????????????? case "Write":
??????????????????? dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, AccessControlType.Allow));
??????????????????? break;
??????????????? case "Modify":
??????????????????? dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Modify, AccessControlType.Allow));
??????????????????? break;
??????????? }
??????? }
?
调用 如下 (要放在你操作文件的前面)
addpathPower(Server.MapPath("~/PUBLIC/ImageForDT/QT/aboutbox.gif"), "EveryOne", "FullControl");
解释下参数,第一个是路径,第二个是用户(有EveryOne,AspNet,administrator……),第三个是你要设什么权限
??
到这步的时候你可能还会报错,因为你只设置了文件权限和操作者,但是文件夹你没添加安全用户,所以第二步了,
第二。 你选择你要操作的文件所在顶级目录(或者上级目录),右键属性,选择安全,点击编辑,然后添加添加,添加用户呢是你刚才第一步调用方法那的第二个参数用户名字. 如果你选的用户还是报错呢,你就进iis里查看一个用户 是iis模拟用户,好像是名字iis_user ,要看你设置了。?
?
如果你上传的文件每次都是覆盖上一次的 也就是 上传的时候每次都一样的话 最好是获取权限然后删除 然后上传
?如:
if (File.Exists(Server.MapPath("~/PUBLIC/ImageForDT/QT/aboutbox.gif")))
??????????? {
??????????????? addpathPower(Server.MapPath("~/PUBLIC/ImageForDT/QT/aboutbox.gif"), "EveryOne", "FullControl");
??????????????? File.Delete(Server.MapPath("~/PUBLIC/ImageForDT/QT/aboutbox.gif"));
??????????? }
??????????? lmdhtop.ImageUrl = "";
??????????? string uploadName = FileUploadForlmdh.PostedFile.FileName;//获取待上传图片的完整路径,包括文件名
??????????? string pictureName = "";//上传后的图片名,以当前时间为文件名,确保文件名没有重复
??????????? if (FileUploadForlmdh.PostedFile.FileName != "")
??????????? {
??????????????? pictureName = "aboutbox.gif";
??????????? }
??????????? try
??????????? {
??????????????? if (uploadName != "")
??????????????? {
??????????????????? string path = Server.MapPath("~/PUBLIC/ImageForDT/QT/");
??????????????????? FileUploadForlmdh.PostedFile.SaveAs(path + pictureName);
??????????????? }
??????????????? lmdhtop.ImageUrl = "~/PUBLIC/ImageForDT/QT/aboutbox.gif";
??????????? }
??????????? catch (Exception ex)
??????????? {
??????????????? Response.Write(ex);
??????????? }
?
基本这样就可以了? 希望能帮的到你
?