加载配置文件时出错: 由于访问被拒绝,未能开始监视对"XXX"的更改

    今天在服务器配置一个.net2.0的虚拟目录DH,出现了这么一条奇怪的错误:加载配置文件时出错: 由于访问被拒绝,未能开始监视对“XXX”的更改,xxx指的是虚拟目录DH所在网站的物理路径。

    前段时间还好好的,突然出现这个问题让我百思不得其解。整个IIS.net框架都是2.0,配置上也没有问题。
    去网上找了找,问这个问题的不少,却没有确切的答案。
    仔细看了下原因,出错详细信息显示在xxx下一个web.config 0行处出错。xxx是一个asp网站,为了方便,所有的测试网站都在这个网站下建了虚拟目录,包括.net。原因可能就出在这个asp网站上面。
    我推测,iis在解析这个.net的虚拟目录DH时,先向根目录下寻找web.config,然后再从虚拟目录下寻找。对于我这个出错的.net虚拟目录DH来说,它的根目录是一个asp网站,肯定没有web.config,所以就出错了。
    尝试解决。把web.config复制到xxx下面,仍然报错。把xxx网站指向别处,还是报错。焦头烂额之际,把xxx指向虚拟目录DH所在的上级目录,问题解决。
    但是xxx是个正在运行中的网站,还得改回来。我将xxx指回原来的目录,意外发现这次没有报错。
    我想原因应该是:.net编译运行后已经放到内存中,这样再次访问DH时IIS已经无须再次编译,直接从内存中读取即可,因此不会报错.
    解决方法为:1.把XXX指向虚拟目录DH的上级目录 2.从浏览器中打开DH,让IIS编译DH 3.把XXX指回原来的目录。
    不过这样一旦服务器重启或者iis挂掉,错误信息就会重现,只能是一个临时解决方法。如果想彻底解决,还得建立一个专门的.net2.0的网站存放.net2.0的虚拟目录。
    最后仍然存在一个疑问:虚拟目录DH的上级目录也是asp,为什么把xxx指向它就不会报错?
这个应该跟权限有点问题 因为你的根目录xxx是asp 那你也应该给xxx加iis_WPG读取与运行权限
把你根目录加一个 IIS_WPG 用户就可以决绝这个问题

你可能感兴趣的:(asp.net)