ASP.Net如何响应发送给我的通用处理程序的请求

时间:2012-11-08 16:52:57

标签: c# asp.net

让我们假设我已经告诉第三方根据{http://myIp/Myhandler.ashx}向我的通用处理程序发送请求。我如何回复他们发送的请求?我有函数进程请求,它允许我访问上下文对象但是如何使用它来确保我的响应返回到请求源自的相同位置,从而充当对其请求的回复。我尝试构建一个HTTPResponse对象并将其发送到他们的服务器,但这不起作用。我试图用OK消息回复它们并给他们一个网址来重定向用户。

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

3 个答案:

答案 0 :(得分:5)

使用context.Response写入响应流。 (您可以随时使用Write而不是将所有内容放在字符串构建器中并编写它;它将自动缓冲它。)ASP,IIS和HTTP将确保写入响应流转向任何实际发送了请求。

答案 1 :(得分:1)

使用context参数设置要发送的响应。由于您的回复是字符串,因此您只需使用Write

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

您还需要设置一些响应标头:

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

答案 2 :(得分:0)

HttpWebResponse response = Context.Response

或简单直接写

Context.Response = SendPOSTRequest ....