昨天须要新建一个虚拟目录放在之前的一个站点下,新建了应用池,配好了环境置顶路径,虚拟目录页创建成功 ,可是程序一直是报错。这个程序我在测试服务器上是测过的,新建了一个站点是能够正常访问的,排除了程序问题。web
一直是报500,在webconfig配置抛出错误的 customErrors节点也不起做用,后来把程序所有删掉放了一个静态页,是能够访问成功的,说明虚拟目录的配置也是没问题的,毫无头绪,在网上查了很久各类配置都试过了仍是不行,今天无心中看见了一个帖子给我灵感,而后试了一下果真成功了服务器
虚拟目录的webconfig是继承了根目录的webconfig的全部配置的,因此若是有节点名称是同样的话就会有冲突报错。这时候极可能会出 http 500的错误ide
这个时候有两种方法能够解决测试
1.在根目录解除子目录的继承spa
1 <configuration> 2 <!--...其余配置...--> 3 <location path="." inheritInChildApplications="false"> 4 <system.web> 5 6 </system.web> 7 </location> 8 <!--...其余配置...--> 9 </configuration>
这里的inheritInChildApplications就是接触子目录webconfig的继承,将不须要子目录继承的节点放在这个节点里面就ok了.net
这种方法的优势是很简单,可是不够灵活,同时面对较复杂的Web.config配置,仍可能会报错。好比根目录和子目录有着不一样的system.webServer配置,按照这个方法在根目录的system.webServer外面加上了location限制,不幸的是,IIS7下会出现500错误。code
2.在子目录对冲突的节点处理blog
根目录节点继承
1 <connectionStrings> 2 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/> 3 </connectionStrings>
子目录节点rem
1 <connectionStrings> 2 <clear/> 3 <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/> 4 </connectionStrings>
在冲突的节点前先clear,清除以前的配置,而后再加载下面的配置就能够了,除了clear 还有remove也能够
<connectionStrings> <remove name="DBConnectionString"/> <add name="DBConnectionString" connectionString="Data Source=.;Initial Catalog=test;User ID=sa;Password=sa123" providerName="System.Data.SqlClient"/> </connectionStrings>
这种配置方法能够用在全部的节点上,使用起来也比较灵活,我的推荐用第二种方法。
参考来自 http://blog.csdn.net/papalian/article/details/7204248 就是我看的那篇帖子,介绍的更为详细一些
最后说一下,昨天从下午三点到晚上十点,今天上午又弄了一个小时。但愿你们能够用得上,之后出现一样的问题直接就能够用了,你们也要多分享