2015-05-29 109 views
1

是否可以從處理程序中調用另一個處理程序?我有一個自定義處理程序,只要請求文件類型就會觸發,然後通過一些身份驗證過程並需要調用另一個處理程序。asp.net通用處理程序調用另一個處理程序

我的問題是我不知道如何去從這個處理程序中調用其他處理程序。

很多謝謝

+0

簡短的回答是:HttpWebRequest.Create。更長的回答遵循 –

回答

3

一個Http處理程序只是一個類。你可以像任何其他類一樣實例化它並調用它的ProcessRequest方法。

但是,一個更好的設計將避免處理程序到處理程序的調用,而是將通用代碼移到實用程序類中並從兩個處理程序中調用它。

我假設你希望處理程序調用共享一個HttpContext和請求/響應流。如果你想讓第一個處理程序調用第二個處理程序,閱讀它的響應,並返回它自己的響應,你可能會想用Glenn的答案來代替。

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"); 

    } 
} 
+0

根據處理程序的具體情況,您可能需要添加代碼以將原始請求複製到使用HttpWebRequest對象發送的「內部」請求中,例如,如果第二個處理程序期望任何變量在表單/帖子或查詢字符串中傳遞,或者它對任何標準http頭文件有任何依賴關係,例如用戶代理。 –

相關問題