Получить ответ в виде строки C#.net

Я создал сайт с 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.

Теперь мой вопрос заключается в том, что когда я запускаю ту же ссылку через оставшийся клиент, я получаю ответный ответ [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>

но мне нужно только закончить. как ответ

как это возможно?

Жду ваших ценных комментариев и предложений

3 ответа

Решение

Попробуй использовать:

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

Вывод в поток ответов в page_load вызовет то, что вы выводите, как самое первое в ответе.

Вот почему вы видите "Завершено" в остальной версии ответа.

Я почти гарантирую, что вы также получаете это в версии браузера, но браузер пытается оградить вас от этого, вы пробовали просматривать источник в html?

У меня есть ощущение, что очистка ответа может не помочь, так как, когда страница попадает в событие on_prerender, она выводит все элементы управления формой / главные страницы и т. Д. И добавляет этот ганк на страницу.

Рассматривали ли вы использование mvc / webapi, было бы гораздо более легкой версией для достижения того, на что вы смотрите.

Попробуйте очистить ответ.

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 также там изменен.

Другие вопросы по тегам