2012-11-08 99 views
-1

讓我們假設我已經告訴第三方向基於{http://myIp/Myhandler.ashx}的通用處理程序發送請求。我如何回覆他們發送的請求?我有功能處理請求,它允許我訪問上下文對象,但是如何使用它來確保我的響應回到請求源發出的相同位置,從而充當對請求的回覆。我嘗試構建一個HTTPResponse對象並將其發送到他們的服務器,但這不起作用。我正在嘗試用確定的消息回覆他們,並給他們一個網址以將用戶重定向到。ASP.Net如何響應發送到我的通用處理程序的請求

public void ProcessRequest(HttpContext context) 
     { 

      string status = context.Request.Params["Status"]; 
      string statusDetail = context.Request.Params["StatusDetail"]; 

      switch (status.ToUpper()) 
      { 
       case "OK": 
        { 
         StringBuilder content = new StringBuilder(); 

         content.Append("Status=" + HttpUtility.UrlEncode("OK")); 
         content.Append("&RedirectURL=" + HttpUtility.UrlEncode("http://http://myip:myport/Error.aspx?Error=SUCCESS")); 
         content.Append("&StatusDetail=" + HttpUtility.UrlEncode("OK")); 


         HttpWebResponse response = SendPOSTRequest("http://theirip.page", content.ToString(), "", "", true); 
} 
} 
+0

我要補充一點,我不打算重定向到一個錯誤頁面。這只是一個測試頁面。 – CSharpened

+0

當人們在沒有解釋的情況下倒退時喜歡它。非常有幫助 – CSharpened

回答

1

使用context參數設置的響應被髮送。因爲你的反應是一個字符串,你可以使用Write

context.Response.Write(content.ToString()); 

你還需要設置一些應答頭:

context.Response.ContentType = "text/plain"; 
context.Response.ContentEncoding = System.Text.Encoding.Default; 
+0

'HttpContext'沒有'Write'方法;您需要將'Write'寫入'Response'對象。 – Servy

+0

你在那裏有一個錯字。它應該是context.Response.Write(content.ToString())。我現在會嘗試。 – CSharpened

+1

@C謝謝,修復。 – McGarnagle

5

您使用context.Response來寫入響應流。 (你可以在使用時使用使用Write,而不是將所有內容放在字符串生成器中並寫入;它會自動將其緩衝到適當位置。)ASP,IIS和HTTP將確保寫入響應流的內容可以發送到實際發送請求的任何內容。

0
HttpWebResponse response = Context.Response 

或簡單的寫直奔它

Context.Response = SendPOSTRequest .... 
+0

這不會起作用......'HttpContext.Response'是隻讀的。 – McGarnagle

+1

你先生,有一個好點 –

相關問題