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

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

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值