ranio Ответов: 1

Как уменьшить медлительность при получении ответа с помощью httpwebresponse?


Я хочу уменьшить медлительность при получении ответа с помощью httpwebresponse с stream reader.
я использую asp.net с c# в более высоком фреймворке (4.6.1) тоже.
Я получаю задержку около 30 секунд и в целом одну минуту при извлечении XML-ответа из ядра с помощью заголовка soap. В Soap UI нет никакой медлительности.
Я использую serivcemanager, для которого используется безопасный протокол TLS1.2 и ServerCertificateValidationCallback, к которому добавляются SSL-сертификаты,

Попробовал уменьшить медлительность при обнаружении прокси-сервера по умолчанию
<system.net>
  <defaultProxy enabled="false">
    <proxy/>
    <bypasslist/>
    <module/>
  </defaultProxy>
</system.net>


Что я уже пробовал:

Мой пример кода выглядит следующим образом:
  CertificateOverride oCertOverride = new CertificateOverride();
            ServicePointManager.ServerCertificateValidationCallback = oCertOverride.RemoteCertificateValidationCallback;

            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

            const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
            const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
            ServicePointManager.SecurityProtocol = Tls12;

           

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AccountStatusLookUpURL);
           
            
            request.Headers.Add("SOAPAction", "https://soa.nbf.ae/ICCSAccountLookup/ICCSAccountLookup");
            request.ContentType = "text/xml; charset=\"utf-8\"";
            request.Accept = "gzip,deflate";
            request.Method = "POST";

            request.Proxy = new WebProxy();
            request.ProtocolVersion = HttpVersion.Version10;

          
            request.ClientCertificates.Add(new X509Certificate2(Common.CORE_PFXPath, Common.CORE_PFXPassword));


                
using (Stream stm = request.GetRequestStream())
            {
                using (StreamWriter stmw = new StreamWriter(stm))
                {
                    stmw.Write(oRequest);
                    LogCORE("Request Posted successfully for Account Status Lookup API for AccountNumber : " + AccountNumber + ". Request : " + oRequest, 2);
                }
            }

HttpWebResponse httpWebRes = (HttpWebResponse)request.GetResponse();
using (StreamReader responseReader = new StreamReader(httpWebRes.GetResponseStream()))
                {
                    
                    result = responseReader.ReadToEnd();
                  
                    //XmlElement root;
                    if (!string.IsNullOrEmpty(result.Trim()))
                    {

                        XmlDocument doc = new XmlDocument();
                        XDocument xdoc = new XDocument();
                        doc.LoadXml(result);

                       
                }

1 Ответов

Рейтинг:
1

Garth J Lancaster

Когда вы создаете запрос, удалить настройки прокси в IE

request.Proxy = new WebProxy();
добавьте строку выделенную жирным шрифтом как указано
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AccountStatusLookUpURL);
           
            
            request.Headers.Add("SOAPAction", "https://soa.nbf.ae/ICCSAccountLookup/ICCSAccountLookup");
            request.ContentType = "text/xml; charset=\"utf-8\"";
            request.Accept = "gzip,deflate";
            request.Method = "POST";

            request.ProtocolVersion = HttpVersion.Version10;
          
            request.ClientCertificates.Add(new X509Certificate2(Common.CORE_PFXPath, Common.CORE_PFXPassword));
request.Proxy = GlobalProxySelection.GetEmptyWebProxy(); // null;
Если вы не используете прокси-сервер или не задаете тип прокси-сервера, запрос попытается автоматически определить и затем настроить прокси-сервер ...


ranio

ответ приходит нормально для меня, но только после задержки, как указано в моем запросе. так что вы говорите, что установка request.proxy, как вы сказали, уменьшит задержку ответа.