0

ページ読み込みイベントでc#.netを使用してWebサイトを作成しました

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を実行すると、Responsenody[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 に答える