我在设置IIS 6中的默认映射时遇到问题。我想使用ASP.NET表单身份validation来保护* .HTML文件。 这个问题似乎与使用虚拟目录来保存html文件有关。 这是如何设置的:
示例目录树
c:/inetpub/ (nothing in here) d:/web_files/my_web_apps d:/web_files/my_web_apps/app1/ d:/web_files/my_web_apps/app2/ d:/web_files/my_web_apps/html_files/
app1和app2都访问相同的html_files目录,所以html_files被设置为IIS中的web应用程序中的虚拟目录…
示例web目录树
//app1/html_files/ (points to physical directory: d:/web_files/my_web_apps/html_files/) //app2/html_files/ (points to physical directory: d:/web_files/my_web_apps/html_files/)
如果我把一个名为test.html的文件放在// app1 /的根目录下,然后把默认映射添加到asp.net dll中,并用deny =“?”在根文件夹中设置我的安全性,然后访问test.html作品完全如预期。 如果我没有通过身份validation,它会将我带到login.aspx页面,如果我通过身份validation,则会显示test.html。
如果我把test.html文件放在html_files目录中,我会得到完全不同的行为。 现在login.aspx页面加载,我插入一些代码来检查我是否仍然通过身份validation:
<p>autheticated: <%=User.Identity.IsAuthenticated%></p>
我想它会说是错误的,因为为什么还要加载login页面呢? 不,它说的是真的 – 所以它知道我被authentication,但它不会让我访问test.html文件。
我已经花了几个小时,并没有能够解决它。 我将花更多的时间在谷歌上,看看我是否遗漏了一些东西。 手指交叉。
我想到了。 随着大量的阅读和大量的反复试验。 在某处,有人已经将虚拟目录转换为IIS6pipe理控制台中的应用程序。 我从每个有问题的目录中“移除”应用程序,现在安全性按照它应该的方式工作。