是否可以從處理程序中調用另一個處理程序?我有一個自定義處理程序,只要請求文件類型就會觸發,然後通過一些身份驗證過程並需要調用另一個處理程序。asp.net通用處理程序調用另一個處理程序
我的問題是我不知道如何去從這個處理程序中調用其他處理程序。
很多謝謝
是否可以從處理程序中調用另一個處理程序?我有一個自定義處理程序,只要請求文件類型就會觸發,然後通過一些身份驗證過程並需要調用另一個處理程序。asp.net通用處理程序調用另一個處理程序
我的問題是我不知道如何去從這個處理程序中調用其他處理程序。
很多謝謝
一個Http處理程序只是一個類。你可以像任何其他類一樣實例化它並調用它的ProcessRequest方法。
但是,一個更好的設計將避免處理程序到處理程序的調用,而是將通用代碼移到實用程序類中並從兩個處理程序中調用它。
我假設你希望處理程序調用共享一個HttpContext和請求/響應流。如果你想讓第一個處理程序調用第二個處理程序,閱讀它的響應,並返回它自己的響應,你可能會想用Glenn的答案來代替。
下面是調用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");
}
}
根據處理程序的具體情況,您可能需要添加代碼以將原始請求複製到使用HttpWebRequest對象發送的「內部」請求中,例如,如果第二個處理程序期望任何變量在表單/帖子或查詢字符串中傳遞,或者它對任何標準http頭文件有任何依賴關係,例如用戶代理。 –
簡短的回答是:HttpWebRequest.Create。更長的回答遵循 –