asp.net中的窗体身份验证(验证HTML文件)

    在前面的几篇文章中介绍了asp.net的窗体身份验证,这种身份验证方式可以让通过验证的用户访问指定的目录,而没有通过验证的用户不能访问该目录下的网页。

    但是,有一种例外,就是目录中的html文件例外。例如,在《asp.net中的窗体身份验证(最简单篇)》中介绍的,除了登录网页之外,所有网页都必须在登录之后才能访问,但如果在网站中添加一个HTMLPage.htm文件,访问该文件是不需要身份验证的。如下图所示:

asp.net中的窗体身份验证(验证HTML文件)_第1张图片

asp.net中的窗体身份验证(验证HTML文件)_第2张图片

    之所以出现这种情况,是由IIS的访问机制决定的。当客户端浏览器向Web服务器发送请求时,Web服务器会对所请求的文件的扩展名进行检查,然后决定由哪个ISAPI扩展处理这个请求,然后将请求传递给该ISAPI扩展。而asp.net事实上也就是一个ISAPI扩展,对于asp1.1而言,这个扩展文件为:C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll,对于asp2.0而言,这个扩展文件为:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll。

    很不幸的是:asp.net映身的扩展名有.aspx、.ascx、.ashx、.asmx,就是没有.htm和.html。所以,如果受限目录中包括.htm和.html网页时,asp.net是不会对其进行处理的。只要用户可以通过IIS的权限控制,就可以访问这些文件。

    找到原因就好办了,如果想要让.htm文件和.html文件也受asp.net控制,那么,就必须添加映射。添加方法如下所示:

    1、在IIS中找到网站或虚拟目录,右击,选择属性,打开如下图所示窗口。

    2、单击“配置”按钮,弹出下图窗口。

    3、单击“添加”按钮,打开如下窗口。

asp.net中的窗体身份验证(验证HTML文件)_第3张图片

    4、在可执行文件中输入“C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll”(asp.net1.1)或“c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll”(asp.net 2.0),在扩展名中输入“htm”或“html”,注意前面不用加“.”。然后点确定。

    5、重启一下IIS,再访问刚才的html文件,如下图所示,现在要求登录了,而且在URL中也可以看到ReturnUrl参数值为htm文件。

 

 

=============================

原创不容易,转载请注明出处。

 

 

相关链接:

1、asp.net中的窗体身份验证(最简单篇)

2、asp.net中的窗体身份验证(分目录验证篇)

3、asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)

4、asp.net中的窗体身份验证(完整篇之二:asp.net的窗体身份验证过程)

5、asp.net中的窗体身份验证(完整篇之三:用户登录页面)

6、asp.net中的窗体身份验证(完整篇之四:获得用户数据)

7、asp.net中的窗体身份验证(完整篇之五:退出登录)

8、asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)

9、asp.net中的窗体身份验证(不同的角色访问不同的目录)

10、asp.net中的窗体身份验证(验证HTML文件)

11、asp.net中的窗体身份验证(完整篇之六:登出后不能通过后退回来面来的页面)

 

 

    本例中用到的源代码只是将《asp.net中的窗体身份验证(最简单篇)》中的源代码进行了修改,有兴趣的朋友也可以在http://www.aspxfans.com/myBlogFile/窗体身份验证:验证HTML文件.rar或http://download.csdn.net/source/1970237来下来。

你可能感兴趣的:(html,asp.net,扩展,asp,web服务,IIS)