IIS 6 ASP.NET 默认处理程序映射和虚拟目录

IIS 6 ASP.NET 默认处理程序映射和虚拟目录

我在 IIS 6 中设置默认映射时遇到问题。我想使用 ASP.NET 表单身份验证保护 *.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 就会完全按预期工作。如果我未通过身份验证,它会将我带到 login.aspx 页面,如果我通过身份验证,则会显示 test.html。

如果我将 test.html 文件放在 html_files 目录中,则会出现完全不同的行为。现在 login.aspx 页面加载,我插入了一些代码来检查我是否仍然通过了身份验证:

<p>autheticated: <%=User.Identity.IsAuthenticated%></p>

我以为它会显示 false,因为否则它为什么要费心加载登录页面呢?不,它显示 true - 所以它知道我已通过身份验证,但它不会让我访问 test.html 文件。

我花了好几个小时才解决这个问题。我打算再花点时间在谷歌上看看我是否遗漏了什么。祝你好运。

答案1

我终于搞明白了。经过大量阅读和反复试验。有人在某个时候将虚拟目录转换为 IIS6 管理控制台中的应用程序。我从每个有问题的目录中“删除”了该应用程序,现在安全性按预期运行。

相关内容