为IIS7开发模块

时间:2011-05-24 14:40:00

标签: c# iis iis-7

我一直在研究IIS7的模块。我想拦截来自特定浏览器的请求。这只是在dev中,但是现在我的代码看起来像这样:

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace MyNamespace
{
    class MyModule : IHttpModule
    {

        #region IHttpModule Members

        public void Dispose()
        {
        }

        public void Init(HttpApplication context)
        {
            context.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
        }

        #endregion


        public void OnPreRequestHandlerExecute(Object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpRequest request = app.Context.Request;

            string useragent = "AGENT: " + request.Headers["User-Agent"];

            throw new HttpException(403, useragent);
            // stuff here
        }
    }
}

我想对此进行测试,但是尽管阅读了有关将其添加到IIS7的NUMEROUS篇文章,我似乎无法使其正常工作。

实施例: http://learn.iis.net/page.aspx/366/developing-iis-70-modules-and-handlers-with-the-net-framework/ http://learn.iis.net/page.aspx/269/how-to-create-a-simple-iis-manager-module/

我有一个强名称,签名的模块,你可以命名。我似乎无法让它显示在IIS的Managed Modules下。

如果在这方面有经验的人可以指出我正确的方向,我将非常感激!代码非常不完整,我不认为它是完美的,但只是让它在IIS7下工作将是一个巨大的进步。

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以简单地将MyNameSpace.dll文件放在bin文件夹中,然后在web.config部分中像这样引用它:

<add name="MyModuleName" type="MyNamespace.MyModule, MyNamespace" preCondition="managedHandler" />