2

我正在编写一个自定义的 c# HttpModule,它将处理来自所有文件类型的请求。作为一个简单的概念证明,我通过添加对 web 配置的 httpModules 部分的引用来设置模块,并为演示 IIS 网站添加了应用程序扩展,并引用了 aspnet_isapi.dll,因此它目前只拦截对“. htm”文件

但即使“OnBeginRequest”事件(下面的代码)中没有重要代码,它也会导致无限重定向循环。我在 XP 上使用 IIS 5 有人知道吗?

到目前为止,我只看到了与 ASPX 文件一起使用的 HttpModule 示例,但您肯定可以为任何文件类型配置吗?

#region IHttpModule 成员

        公共无效处置(){}

        公共无效初始化(HttpApplication上下文)
        {
            context.BeginRequest += new EventHandler(OnBeginRequest);
        }

        ///
        ///
        ///
        ///
        public void OnBeginRequest(Object s, EventArgs e)
        {
            HttpApplication context = s as HttpApplication;

            Uri currentURL = context.Request.Url;
            字符串 pageName = currentURL.Segments.Last().ToLower();
        }
#endregion
4

1 回答 1

1

好的。问题实际上出在 HttpModule 本身。

看来您必须使用 HttpApplication 上下文才能使其在客户端上呈现。

例如,在您执行完所有自定义逻辑后,您需要写入上下文:

context.Response.Write("/n/r");

//或者

context.Response.Redirect("test.htm");

然后一切都按照您的预期呈现

于 2009-09-14T09:49:16.913 回答