20.3 IIS 7.0和表单验证(2)
时间:2011-05-15 来源:Vision536
20.3 IIS 7.0和表单验证(2)
不过,仅仅把ASP内容和基于ASP.NET的登录页面放到一起并配置表单验证还不足够。试图访问传统ASP页面时,表单验证还不能工作。根据验证和授权规则的不同,你可能得到一个"未授权"响应或不经登录提醒就直接访问到了传统ASP页面(将在第23章学习授权规则及其行为的更多内容)。
产生这种行为的原因是默认情况下托管的HTTP模块(如表单验证模块)被配置为仅为针对基于ASP.NET的代码的请求执行。因此,为了让表单验证能够工作,必须在选中Web应用程序后,在IIS 7.0管理控制台中选择HTTP模块配置特性来修改这一行为。然后,在模块列表里打开FormsAuthentication模块配置的细节,如图20-7和图20-8所示。
打开HTTP模块配置特性后,需要找到FormsAuthentication项并双击它,或者单击管理控制台右边任务栏里的"编辑"链接。在打开的设置对话框里,需要禁用"Invoke Only for Requests to ASP.NET Applications or Managed Handlers"选项,如图20-8所示。
完成这项配置后,再访问Web应用程序目录里的传统ASP页面时,请求就会使用ASP.NET表单验证来进行验证。Web应用程序的web.config的内容大致如下:
(点击查看大图)图20-7 在Web应用程序里选择HTTP模块配置特性 (点击查看大图)图20-8 FormsAuthentication模块的配置细节对FormsAuthentication模块的配置非常重要。按图20-8配置的复选标记在配置里显示为pre- Condition = "",而它的默认值是managedHandler。
整体而言,可以通过这样的方式对基于IIS 7.0 Web服务器配置的Web应用程序最大化应用ASP.NET特性的能力,如表单验证甚至第21章介绍的成员资格API。和前面版本的IIS相比,这是一个巨大的优势,同时它使得很多事情变得更加简单。