关于asp.net:实施IHttpHandler会导致响应返回空HTML?

Implementing an IHttpHandler causes responses to return empty HTML?

我使用IIS 7和.NET 2.0来实现此HttpHandler,以限制对某些请求的访问,这些请求对我们的服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Web;

public class HtmlHandler : IHttpHandler
{
    public bool IsReusable
    {
        get
        {
            return true;
        }
    }

    public void ProcessRequest (HttpContext context)
    {
        if(!context.Request.IsAuthenticated)
            context.Response.Redirect("/inc/logout.asp");
    }
}

我像这样在IIS中对其进行设置:

enter

偷看-IHttpHandler与IHttpModule


您使用的方法错误。 HttpHandlers通常用作Ajax处理程序,以处理请求并将字符串或JSON数据返回给JavaScript客户端。

我认为,通过定义从System.Web.UI.Page继承的自己的\\'BasePage \\'类,可以更好地解决您的问题;你可以把这个..

1
2
if(!context.Request.IsAuthenticated)
            context.Response.Redirect("/inc/logout.asp");

.. in PageLoad,然后更改您的安全页面,以使它们继承自新的BasePage类而不是System.Web.UI.Page

这样,对从BasePage派生的每个页面都运行检查,并且实际上将执行重定向;用户将被重定向。就用户而言,在HttpHandler中执行重定向似乎无济于事。