上传文件的时候报被拒绝访问或报未知标识错误的解决方案

2014-11-24 03:14:07 · 作者: · 浏览: 0

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);

}

基本这样就可以了 希望能帮的到你

摘自 pcenshao