HttpWebRequest/HttpResponse: как отправить данные в ответ?

У меня есть клиент и сервер.

На стороне клиента у меня есть:

HttpWebRequest request = 
    (HttpWebRequest)WebRequest.Create("http://localhost/fa/Default.aspx");
request.Method = "POST";                

byte[] data = Encoding.ASCII.GetBytes(GetSAMLRequestB64());

request.ContentType = "text/xml";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

На стороне сервера у меня есть:

public void ProcessRequest(HttpContext httpContext) 
{
    HttpResponse response = httpContext.Response;             
    response.Clear();
    response.BufferOutput = true;
    response.StatusCode = 200; // HttpStatusCode.OK;
    response.Write("Hello");
    response.ContentType = "text/xml";
    response.End();
}

Клиент получает ответ с правильным StatusCode. Хотя, если я делаю (int)response.ContentLength; на клиенте, я получаю 0. Я не могу прочитать строку «Привет» после получения ответа (на стороне клиента).


person user252816    schedule 11.02.2010    source источник
comment
Я знаю, что это старая тема, но может кому-то поможет. Попробуйте stackoverflow.com/questions/4088625/   -  person Murali    schedule 18.10.2013


Ответы (2)


Возможно, поможет установка типа контента перед фактической записью или сбросом потока.

person m0sa♦    schedule 11.02.2010
comment
Я сделал это, однако возникла проблема с копированием/прошлым... Итак, все еще не работает с типом контента. - person user252816; 11.02.2010

Вы не установили ContentLength на сервере. Может быть, это помогло бы?

person John Saunders    schedule 11.02.2010
comment
как я могу установить contentLength на сервере? - person user252816; 11.02.2010
comment
response.ContentLength = n; не работает? Если нет, то я ошибаюсь, что ContentLength является вашей проблемой. - person John Saunders; 12.02.2010