有两个Web应用程序。
WebApp1将POST-request(1)发送到WebApp2。然后WebApp2将POST响应(2)发送到WebApp1。我正在开发WebApp2。我创建了简单的aspx页面。 OnLoad事件让我有能力处理(1)& (2)并提供app逻辑。要做出回应(2)我正在使用Response.Write(...)。但!响应之后(2)WebApp1再向我的应用发送一个请求,以确认我的回复是成功收到的。那就是问题所在。我不知道怎么抓(3)。 Response.Write(...)写入响应流,但不从WebApp1返回任何数据。
protected void Page_Load(object sender, EventArgs e)
{
if (Request.HttpMethod == "POST")
{
logger.Trace(" -- POST REQUEST ...");
string requestBody;
using (StreamReader writer = new StreamReader(Request.InputStream))
{
requestBody = writer.ReadToEnd();
logger.Trace("Request body:\n{0}", XmlHelper.FormatStringToXml(requestBody));
}
string responseBody = ProcessRequest(requestBody);
logger.Trace("Response body:\n{0}", XmlHelper.FormatStringToXml(responseBody));
if (!string.IsNullOrEmpty(responseBody))
{
SendPostXmlResponse(responseBody);
}
else
{
logger.Error("Cant send empty response. No response was sended.");
}
}
else
{
logger.Error(" -- GET REQUEST is not supported. No actions were made.");
}
}
private void SendPostXmlResponse(string response)
{
Response.ContentType = "text/xml";
Response.Clear();
Response.BufferOutput = true;
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
using (MemoryStream stream = new MemoryStream (SmsService.StringToUTF8ByteArray(response)))
{
stream.WriteTo(Response.OutputStream);
}
}
方法SendPostXmlResponse(字符串响应)必须在发出响应后返回从客户端收到的数据。
答案 0 :(得分:0)
您尝试这样做的方式无法正常工作,因为从您开始发送数据的那一刻起,您就无法停止发送并再次开始阅读。
最好使用一些代码向另一方发送链接,另一方重播以对此链接的新调用作为获取数据的确认。
在底部,如果您发送所有数据后此参数为Response.IsClientConnected
为真,那么数据就在那里且通讯不会丢失。