2012-11-08 40 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

你先生,有一个好点 –

相关问题