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中对其进行设置:
起初,它似乎起作用。如果尝试访问.html文件时未对请求进行身份验证,它会将我重定向到登录页面。
问题是,当我登录并尝试访问该页面时,它只会返回一个空白页面。只是html,head和body标签。
我在做什么错?
根据我的记忆,
如果要过滤/代理,则应实现
偷看-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中执行重定向似乎无济于事。