是否可以从处理程序中调用另一个处理程序?我有一个自定义处理程序,只要请求文件类型就会触发,然后我会通过一些身份验证过程并需要调用另一个处理程序。
我的问题是我不知道如何从这个处理程序中调用另一个处理程序。
非常感谢
答案 0 :(得分:3)
Http处理程序只是一个类。您可以像任何其他类一样实例化它并调用其ProcessRequest方法。
但是,更好的设计是避免处理程序到处理程序调用,而是将公共代码移动到实用程序类中,并从两个处理程序中调用它。我在这里假设您希望处理程序调用共享HttpContext和请求/响应流。如果你想让第一个处理程序调用第二个处理程序,读取它的响应,并返回它自己的响应,你可能会想要使用Glenn的答案。
答案 1 :(得分:0)
以下是调用other handler
:
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
var otherurl = "https://localhost:81/otherhandler.ashx";
// using System.Net;
var req = (HttpWebRequest)HttpWebRequest.Create(otherurl);
var sr = new StreamReader(req.GetResponse().GetResponseStream());
// read stuff: sr.ReadBlock(), sr.ReadToEnd(), ...
// do something with the response
context.Response.Write("Hello World");
}
}