最近做一个网站,其中有一些xml文件,没发布之前在debug下一切正常可以正常访问
但发布以后这些xml文件都拒绝访问,我上网查了一些说是权限问题,但客户要求安全级别比较高
我不能去更改发布后的文件夹或文件的权限,后来我想通过程序来更改文件访问权限,用了Process类来调用cmd方式执行dos命令
可还是不好用
还请各位高手帮忙看看有没有更好的方法!小弟在这里先谢谢各位!

解决方案 »

  1.   

    可能XML 被限制访问了, 可以通过程序来代理访问,比如用页面 proxy.aspx 来代理输出 xml,  response.writefile("xxx.xml"); 
      

  2.   

    只能改权限了,或者 把XML文件 存在数据库里面,用的时候 生成?
      

  3.   

    把XML文件的权限设置得低一点就行,比如去掉“只读”属性,改成“完全控制”之类的。
      

  4.   

    bin和debug下的文件好像只读的吧,去掉只读即可
      

  5.   

    呵呵 谢谢各位了
    问题已经解决了
    我把部分代码贴出来,有需要的可以看一下
    web.config中加
    <system.web>
        <identity impersonate="true" />//web.config必须加的不然会报错主要用途是虚拟特定的用户
    <system.web \>
    //引用命名空间,这个需要引用一个外部的程序集有需要的可以联系我QQ:444511958
    using Microsoft.Win32.Security;SecurityDescriptor secDesc = SecurityDescriptor.GetFileSecurity(Server.MapPath(@"../../App_Data"), SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);
    Dacl dacl = secDesc.Dacl;
    //windows xp sid用ASPNET windows 2003 sid用NETWORK SERVICE
    dacl.AddAce(new AceAccessAllowed(new Sid("ASPNET"), AccessType.GENERIC_ALL, AceFlags.CONTAINER_INHERIT_ACE | AceFlags.OBJECT_INHERIT_ACE));
    secDesc.SetDacl(dacl);
    secDesc.Owner = new Sid("ASPNET");
    secDesc.SetFileSecurity(Server.MapPath(@"../../App_Data"), SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);