IIS7以后application pool都支持两种模式:经典模式和集成模式。
所谓经典模式就是与IIS6的application pool运行模式相同,对于asp.net的页面请求处理由单独的asp.net filter完成。
集成模式是IIS7及以上的默认模式,对于各种请求的处理均在一条流水线上由不同的模块完成。

由于IIS7与.NET的完美结合使很多原本在IIS6中比较麻烦的事情变得简单。比如我们可以通过C#编写托管模块处理网站的所有请求,这在IIS6中需要通过非托管代码写ISAPI filter来完成。
最近就遇到一个小问题,网站因为某种原因需要同时启用匿名和windows集成认证,但是在特定情况下需要将匿名请求变成windows认证过的请求,于是就通过以下几行代码编译成一个IIS扩展dll模块,放在网站相应的bin目录下,然后到IIS Manager - Modules - Add Managed Module添加托管模块。在匿名请求进来的时候判断条件然后返回401 Authentication Challenge, 客户端就弹出认证框开始认证用户了。
using System;
using System.Web;
namespace IISModules
{
public class CustomAuthenticationModule : IHttpModule
{
public const string HttpNtlmSchemeName = "NTLM";
public const int HttpNotAuthorizedStatusCode = 401;
public const string HttpWWWAuthenticateHeader = "WWW-Authenticate";
public cons

本文介绍了如何在IIS7及以上版本中,利用C#编写托管模块来处理网站请求,特别是在集成模式下,通过创建自定义DLL模块,实现了在匿名和Windows集成认证之间的动态切换。当特定条件满足时,匿名请求会被转化为需要Windows认证的请求,从而触发客户端的认证过程。
最低0.47元/天 解锁文章
3632

被折叠的 条评论
为什么被折叠?



