0

我已将 IHttpHandlerFactory 映射到“所有”http 请求。

<httpHandlers>
    <add verb="*" path="*.*" type="HomeController"/>
</httpHandlers>

从家庭控制器,我调用不同的 HTTP 控制器。

我的一些控制器必须将用户重定向到不同的 .aspx 文件。

问题:这会再次触发家庭控制器(工厂),并在无限循环中调用它。

工厂代码

public class HomeController : IHttpHandlerFactory
{
public HomeController()
{
}


public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{   ....
        return new HelloWorldHandler2();
    ....
}

public void ReleaseHandler(IHttpHandler handler)
{
    if (this.handler.Equals(handler))
    {
        this.handler.busy = false;
    }
    //throw new NotImplementedException();
}

处理程序代码

public class HelloWorldHandler2 : IHttpHandler
{
 public HelloWorldHandler2()
{

}
public bool busy = false;

public void ProcessRequest(HttpContext context)
{
    HttpRequest Request = context.Request;
    HttpResponse Response = context.Response;
    // This handler is called whenever a file ending 
    // in .sample is requested. A file with that extension
    // does not need to exist.
    //Response.Write("<html>");
    //Response.Write("<body>");
    //Response.Write("<h1>backup handler</h1>" );
    //Response.Write("</body>");
    //Response.Write("</html>");
    context.Handler = this;
    Response.Redirect("About.aspx");
}



public bool IsReusable
{
    // To enable pooling, return true here.
    // This keeps the handler in memory.
    get { return false; }
}
}

如您所见,工厂调用处理程序,处理程序重定向页面,重定向再次调用工厂......

4

0 回答 0