代码如下:
public class Checked:IHttpHandler
{


public Checked()
{

} #region IHttpHandler 成员

public void ProcessRequest(HttpContext context)
{ string url=context.Request.Path.ToString().ToLower();

IRole d=new CheckRole();
if(!d.CheckUserRole(url))//检查权限,如果没有此模块的权限则导向提示页
{
context.Response.Redirect("~/noright.aspx");
}

} public bool IsReusable
{
get
{
// TODO:  添加 Checked.IsReusable getter 实现
return true;
}
}

#endregion
我是把页面的地址放到数据库里,然后用户请求的时候再和数据库里的数据作对比来达到权限控制的目的.
以上程序执行后,如果没有权限则可以成功导向一个提示页,但是访问已被授权的页面就出现空白页,只有基本的几行HTML代码,其它的代码都不显示(在没有和IHttpHandler关联之前是正常的).请教各位了,用context.RewritePath()执行重定向我也试过了,都不行.

解决方案 »

  1.   

    你是通过检测用户的请求地址来划分权限,根据用户身份,或者设置角色也不错啊(这可是 windows的经典)
      

  2.   

    你应该用IHttpModule,而不是IHttpHandler。Module是处理请求中的一个步骤,你可以根据权限重定向该清楚。Handler用于处理请求,你用了Handler而又不作出任何处理,当然返回内容为空啦。
      

  3.   

    应该用IHttpModule,Page本身就是一个IHttpHandler,你自己写一个则表示你必须完整实现Page的所有功能。因为IHttpHandler在一次请求中是唯一的,多了解一下IHttpModule和IHttpHandler的区别。
      

  4.   

    IHttpHandler在一次请求中是唯一的