我有两个不同的虚拟目录映射到操作系统上的同一目录。在其中一个虚拟目录中,我需要禁用浏览文件夹,而另一个我需要启用它。
问题在于,当我改变其中一个时,另一个也发生了变化。我认为这个问题与两个虚拟目录指向操作系统中的同一个文件夹有关,但是对于IIS6,我有相同的配置而没有问题。
有什么想法解决这个问题吗?
谢谢!
答案 0 :(得分:4)
IIS 7确实在目录中使用web.config文件进行配置,但是,您也可以放弃使用web.config文件(即不使用IIS管理器工具)而不是通过IIS管理器启用目录浏览,只需编辑您的applicationHost.config,即可在您实际想要启用浏览的唯一虚拟目录上设置目录浏览。这将允许您在一个虚拟目录中浏览,但不能在另一个虚拟目录中浏览,即使两者都指向同一个物理目录。
这是一个例子: 编辑applicationHost.config文件。此文件可在%WINDIR%\ System32 \ inetsrv \ config 目录中找到。
1)转到文件的底部。您应该在配置部分找到XML结束标记:
</configuration>
2)在该标记上方,使用以下内容作为指南添加位置标记:
<location path="{website name}/{path to virtual directory}">
<system.webServer>
<directoryBrowse enabled="true" />
</system.webServer>
</location>
将{网站名称}替换为相关网站的网站名称(如IIS管理器中所示)和{虚拟目录路径},其中包含您希望浏览的虚拟目录的路径。 例如:
<location path="MyWebsite/imagelist">
现在让我们说在上面的例子中, imagelist 是一个指向{your webroot} / pics的虚拟目录,你有另一个名为 images 的虚拟目录,它也指向到{your webroot} / pics。当访问者访问 yoursite.com/images 时,他们将无法看到图片列表,但当他们访问 yoursite.com/imagelist 时,他们会收到返回的目录列表。
答案 1 :(得分:1)
有很多种可能性,但我面对并修复的内容如下所示。
IIS中的.NET框架与web.config中指定的框架不匹配。将IIS中的框架更改为创建项目的框架。 (如果创建的项目或解决方案是4.5 / 4.0,则在您的网站预先设置下将IIS更改为4.0。)
检查web.config中的标签是否已正确关闭所有节点。
这应该有用!!
谢谢, 阿南德
答案 2 :(得分:0)
与IIS6不同的原因是IIS6存储了允许在虚拟目录的IIS6 Metabase DirBrowseFlags 属性中进行目录浏览的属性,该属性具有每个虚拟目录的唯一条目,而在IIS7中,that property is now stored only in the Web.config
file:
<system.webServer>
<!-- ... -->
<directoryBrowse enabled="true" />
</system.webServer>
由于IIS7中的两个虚拟目录共享同一个物理目录,因此它们共享相同的Web.config
文件,因此您会发现将属性更改为一个会导致更改出现在另一个中,如他们都在修改相同的Web.config
文件。
(目前我还不知道为IIS7做了一个很好的解决方法。)