Response.OutputStream.Write出现问题

本文关键字:问题 Write OutputStream Response | 更新日期: 2023-09-27 18:28:32

我对这个方法有问题,出于某种原因,我向我的asp页面发送请求,然后读取Response流,我得到了我的asp页的内容以及我写入Response.OutputStream.Write(info, 0, info.Length)的数据。

在我的例子中,我把字符串"1"写成字节,客户端程序的输出是:

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
    <form method="post" action="LauncherLogin.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZMraZTexYtyyQ9NaNN0YMvYIep5peaSEIrDBqxTff6rW" />
    <div>
    </div>
    </form>
</body>
</html>

我不想在收到的响应中使用此HTML,我该如何处理它?

客户端代码(c#程序):

public static string SendInformation(string values)
{
    ASCIIEncoding encoding = new ASCIIEncoding();
    string postData = values;
    byte[] data = encoding.GetBytes(postData);
    // Prepare web request...
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serverAddress + commmunicationForm);
    myRequest.Method = "POST";
    myRequest.ContentType = "text/html";
    myRequest.ContentLength = data.Length;
    string result;
    using (Stream stream = myRequest.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }
    using (WebResponse response = myRequest.GetResponse())
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            result = reader.ReadToEnd();
            return result;
        }
    }
}

ASP.aspx代码(服务器端):

if (dt.Rows.Count > 0)
{
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Buffer = false;
    string errNum = dt.Rows[0][0].ToString();
    byte[] info = Encoding.ASCII.GetBytes(errNum);
    Response.OutputStream.Write(info, 0, info.Length);
    Response.Flush();
}

即使我只是这样做:

string errNum = dt.Rows[0][0].ToString();
byte[] info = Encoding.ASCII.GetBytes(errNum);
Response.OutputStream.Write(info, 0, info.Length);
Response.Flush();

我仍然得到html代码:|

我确实尝试了Response.Clear()和其他.Clear()方法,但没有成功。

Response.OutputStream.Write出现问题

您的问题是您试图在页面生命周期中过早地更改输出(您试图在事件处理阶段影响总输出)。您需要有更改Render方法中内容的逻辑。您可以覆盖Render方法,如下所示:

protected override void Render(HtmlTextWriter writer)
{
    // Your logic here
}

有关页面事件及其发生顺序的详细信息,请参阅ASP.NET页面生命周期概述。

您可以尝试Response.Flush()。这应该会发送您所写的内容,并清除之后发送的内容。