0

我们在 IIS 6 上有 ASP.Net 应用程序。它托管在我无法访问的某些服务器上。我们希望帮助文件夹中的静态文件(*.html、*.htm)受到保护(它们需要进行身份验证,因此我们需要将 html 和 htm 文件视为 aspx 文件)。

我在这里找到了一篇文章 - http://forums.asp.net/t/1184547.aspx(表单身份验证和 HTML 页面的 IIS 问题)。然后我写信给托管公司,他们为 IIS 6 创建了 html 和 htm 文件映射。其次,我配置了我的 web.config 文件,正如上面文章中所写的那样。结果像https://www.mypage.com/help/static.html这样的链接受到保护(用户被重定向到登录页面)。

但是,像https://mypage.com/help/static.html这样的链接不受保护(用户不会被重定向到登录页面)。我在网上没有发现任何类似的问题。

1)我想知道,什么会导致这个问题?是 IIS 6 配置不正确还是我应该更改我的 web.config?

2)我写信给托管服务,他们建议我阅读有关 URLRewriting 的内容。我不觉得这是关于 UrlRewriting 的事情,或者是吗?我现在不使用任何 url 重写,应该吗?

4

2 回答 2

0

主机可能会通过主机标头解析您的站点,并显式查找较长的 URL,即使 mypage.com URL 已解析。后者没有作为受保护的引用被捕获,因此它绕过了他们的检查。但是,您可以做的是编写一段代码来检查所请求的入站 URL,如果您看到“短”版本,请将 URL 重定向到应该得到正确身份验证/路由的全名想要。您甚至可以在 web.config 文件中配置基本的重写。

在这个位置有一个相当不错的主题摘要。您可能会发现 web.config 示例是在您的情况下尝试的最佳首选。

于 2012-08-31T16:21:39.963 回答
0

IIS6 与 IIS7 的工作方式不同;在 IIS6 下,该web.config文件仅控制 ASP.NET 的工作方式,而不是 IIS,而在 IIS7 中,您可以<system.webServer>配置 IIS 的配置方式。

其次,IIS7(默认情况下)调用“托管管道”,它有效地允许 ASP.NET 修改任何传入 HTTP 请求的各个方面,这就是 ASP.NET URL Routing 的工作原理(因为 Routing HTTP 模块检查每个传入的 HTTP 请求,如果它与现有资源不匹配,则您的 ASP.NET 应用程序会处理它)。

关于您的实际问题,我们需要更多细节。听起来您的主机创建了两个虚拟网站(一个处理“www.mysite.com”,另一个处理“mysite.com”,并且保护仅适用于“www”站点)。另一种解释是仅当主机头是“www.mysite.com”而不是也接受“mysite.com”(或任何其他主机头)时保护文件检查的规则。

URL 重写在这里对您没有帮助。如果您的主机建议那么它告诉我他们可能不知道他们在做什么(此外,IIS6 不支持没有第三方扩展的 URL 重写)。

于 2012-08-31T16:22:27.207 回答