0

我在页面加载事件中使用 c#.net 创建了网站

protected void Page_Load(object sender, EventArgs e)
    {

        string s = "completed.";
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

        Response.OutputStream.Write(bytes, 0, bytes.Length);
    }

当我通过浏览器运行时,我得到了正确的响应

Completed.

现在我的问题是,当我通过 rest 客户端运行相同的 url 时,我得到的响应 nody[raw] 为

completed.

<!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="Default.aspx" id="form1">

<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZJy1PJCY5kS9nkQAfBTgrw0zeG/yMEs2VJP+7kbHC2Yp" />
</div>    <div> </div>    </form></body></html>

但我只需要完成。作为回应

这怎么可能 ?

等待您的宝贵意见和建议

4

3 回答 3

3

尝试使用:

Response.Clear();
Response.OutputStream.Write(bytes, 0, bytes.Length); 
Response.End(); 
于 2012-08-30T05:48:15.110 回答
1

尝试清除响应。

protected void Page_Load(object sender, EventArgs e)
    {

        string s = "completed.";
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

        Response.Clear();
        Response.OutputStream.Write(bytes, 0, bytes.Length);
    }

如果这无济于事,请使用 OnRender 方法。在 Page_Load 之后的页面生命周期中有一些方法,我认为 OutputStream 也在那里进行了修改。

于 2012-08-30T05:48:09.693 回答
1

输出到 page_load 中的响应流将导致您输出的任何内容作为响应中的第一件事。

这就是为什么您在其余版本的响应中看到“已完成”。

我几乎可以保证您在浏览器版本中也得到了这个,但是浏览器正试图保护您免受它的影响,您是否尝试过在 html 上查看源代码?

我有一种感觉,清除响应可能无济于事,因为当页面点击其 on_prerender 事件时,它将呈现所有表单控件/母版页等,并将该垃圾添加到页面中。

您是否考虑过使用 mvc/webapi 它会是一个更轻量级的版本来实现您所看到的。

于 2012-08-30T05:48:18.267 回答