首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

下传文件的时候报被拒绝访问或报未知标识异常的解决方案

2012-08-27 
上传文件的时候报被拒绝访问或报未知标识错误的解决方案1.首先你要给你要操作的文件赋予权限? 方法如下?//

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

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

?

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

?

热点排行