Я использую следующие строки кода для чтения ответа асинхронного HttpWebRequest. Это, по-видимому, наибольшее время, затрачиваемое на конкретную операцию. Есть ли что-то, что я могу оптимизировать здесь?Оптимизация HttpWebResponse - GetResponse
System.Net.HttpWebResponse oResp =(System.Net.HttpWebResponse)oReq.EndGetResponse(oResult);
oResp = (HttpWebResponse)oReq.GetResponse();
StreamReader oStreamReader = new StreamReader(oResp.GetResponseStream());
string sResponse = oStreamReader.ReadToEnd();
... далее сделать XmlDocument, добавьте еще несколько XML к нему, а затем выполнить XSL-преобразования.
Создание соединений:
HttpWebRequest oReq;
oReq = (HttpWebRequest)WebRequest.Create(sUrl + sQueryString);
oReq.ContentType = sContentType;
oReq.Method = "POST";
oReq.ContentLength = aBytes.Length;
Stream oStream = oReq.GetRequestStream();
oStream.Write(aBytes, 0, aBytes.Length);
oStream.Close();
AsyncState oState = new AsyncState(oReq);
return oReq.BeginGetResponse(fCallBack, oState);
Чтобы ответить на это, вам необходимо собрать дополнительную информацию. Задержка происходит на клиенте или на сервере? вы упомянули, что вам нужно создать XML-документ - это сервер, создающий этот документ «на лету», или он служит для хранения документа с диска? Вы проходите через прокси? Вы используете аутентификацию? Вы используете Tcp для поддержания связей? Связано с этим, этот запрос выполняется в цикле, или это одноразовое приложение, которое делает только этот запрос и заканчивается? Показать свой фрагмент кода о том, как вы создаете свой запрос. И мы можем взять его дальше оттуда. – feroze
Также, почему вы вызываете EndGetResponse(), а затем GetResponse() снова? Это неверное использование API. – feroze
Дополнительная информация: Сервер генерирует xml на лету. Я не использую прокси. Вызовы аутентифицированы. Соединения не поддерживаются. Соединения одноразовые, не более одного соединения на каждый груз. Я добавил выше, как создается запрос. – aepheus