情况1:
当使用.net创建一个新的web程序时,通常会自动的创建虚拟目录并设置为网站程序。但是如果你手工创建虚拟目录而没有设置为网站程序,你就不能浏览网站的网页并出现上述的错误。
右键单击“默认网站”->新建->虚拟目录,将虚拟目录指向程序所在处,设置网站程序,就可以访问了。
情况2:
当你把web.config放在网站程序中的子文件夹时,有一些属性不能设置,如authentication, session state(错误信息显示子文件夹中web.config声明的authentication, session state所在的行号)。原因是这些设置不能被子文件夹的权限覆盖(override),除非子文件夹本身被设置成网站程序。通常情况下我们希望把web.config放在子文件夹中来保护对子文件夹中文件的访问(假设目录是admin,我们希望保护admin里面的文件不被未授权的用户访问)
实际上,当web.config在网站程序根目录时,也能做到,如下:
<location path="Admin">
<system.web>
<authorization>
<allow roles="administrators" />
<deny users="*" />
</authorization>
</system.web>
</location>
如果你想把web.config放在子目录,可以这样设置:
<configuration>
<system.web>
<authorization>
<allow roles="administrators" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
这样可以做到保护子文件夹不被未授权的用户访问。