我们在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的,或者是它?我现在不使用任何网址重写,不是吗?
答案 0 :(得分:0)
主机可能通过主机标头解析您的网站,并明确查找更长的网址,即使mypage.com网址已解析。后者不会被捕获为受保护的引用,因此它会绕过它们的检查。但是,您可以执行的操作是编写一大块代码来检查所请求的入站URL,如果您看到“短”版本,请将URL重定向到应该的全名,然后获取正确的身份验证/路由我想要的。您甚至可以在web.config文件中配置基本重写。
在this location有一个相当不错的主题摘要。您可能会发现web.config示例是在您的情况下尝试的最佳首选。
答案 1 :(得分:0)
IIS6与IIS7的工作方式不同;在IIS6下,web.config
文件仅控制ASP.NET的工作方式,而不控制IIS,而在IIS7中,您可以使用<system.webServer>
元素来配置IIS的配置方式。
其次,IIS7(默认情况下)调用“托管管道”,它有效地允许ASP.NET修改任何传入HTTP请求的每个方面,这就是ASP.NET URL路由的工作方式(因为路由HTTP模块检查每个传入HTTP请求,如果它与现有资源不匹配,则ASP.NET应用程序会处理它。)
关于您的实际问题,我们需要更多细节。听起来您的主机创建了两个虚拟网站(一个处理“www.mysite.com”而另一个处理“mysite.com”,并且保护仅适用于“www”网站)。另一种解释是,只有当主机标题为“www.mysite.com”而不是接受“mysite.com”(或任何其他主机标题)时才会保护文件的规则。
网址重写对您没有帮助。如果您的主机建议那么它会告诉我他们可能不知道他们在做什么(同样,如果没有第三方扩展,IIS6也不支持URL重写)。