IIS中虚拟目录不继承主站点web.config设置的办法(转载)
ASP.NET提供了强大的Web.config来配置网站,一般来说一个网站只有一个根目录下的Web.config文件,有时候我们希望子目录有着不同的权限或者参数设置,则可以在相应子目录增加一个Web.config配置文件,加入我们新的配置参数。这里需要注意的是,子目录web.config是继承父目录的所有设置的,因此,如果子目录放的是一个和父目录里不一样的网站,就不能共享父目录的配置了,否则很可能会冲突。比如很多主机都提供了将域名绑定到子目录从而能够建立多个网站的方法,以Godaddy的Windows主机为例,如果我们想通过子目录建立一个全新的网站,如果不配置好正确的Web.config,很可能会报HTTP 500错误Internal Server Error。下面会分析出现该错误的原因,并给出了正确的配置方法。
查看HTTP 500错误详情
在自己机器上很容易看到错误,但是上传到远程主机后,往往只会提示友好的错误信息,让我们无法知道细节。为了查看错误发生的原因,需要显示错误详情,修改根目录和子目录网站的Web.config文件,在system.webServer节点中添加如下配置,
<httpErrors errorMode="Detailed" />
在system.web节点添加如下配置
<customErrors mode="Off"/>
这样就可以看到详细的错误来源了。子目录网站产生500 Internal Server Error错误的原因多半是和Web.config配置冲突导致。比如在根目录定义了一个name为"connStr"的connectioinString节点,如果在子目录中定义name同样为"connStr"的connectionString节点,则会出错,因为任何配置节点都不允许重复键的加入,否则会提示Dulplicate key之类的错误。那么怎么避免子目录和根目录的配置冲突呢?一般有两种解决方法,一种是修改根目录中的Web.config,使其消除子目录和根目录的继承关系,即子目录Web.config的配置不受根目录Web.config的影响ÿ