5 Stimmen

HttpWebRequest läuft langsam zum ersten Mal innerhalb von SQLCLR

Wenn eine HttpWebRequest innerhalb einer CLR gespeicherten Prozedur (wie im Code unten), der erste Aufruf nach der Sql Server (neu) gestartet wird oder nach einem bestimmten (aber unbestimmten) Zeitraum wartet für eine ganze Länge der Zeit auf die GetResponse() Methode aufrufen.

Gibt es eine Möglichkeit, dies zu beheben, die nicht einen "Hack" wie mit einem Sql Server Agent Job alle paar Minuten ausgeführt, um zu versuchen und sicherzustellen, dass der erste "langsame" Aufruf durch den Agenten und nicht "echte" Produktionscode gemacht wird?

function SqlString MakeWebRequest(string address, string parameters, int connectTO)
{
  SqlString returnData;
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Concat(address.ToString(), "?", parameters.ToString())); 
  request.Timeout = (int)connectTO;
  request.Method = "GET";
  using (WebResponse response = request.GetResponse())
  {
    using (Stream responseStream = response.GetResponseStream())
    {
      using (StreamReader reader = new StreamReader(responseStream))
      {
        SqlString responseFromServer = reader.ReadToEnd();
        returnData = responseFromServer;
      }
    }
  }
  response.Close();

  return returnData;
}

(Fehlerbehandlung und anderer unkritischer Code wurde der Kürze halber entfernt)


Siehe auch dieser Sql-Server-Foren-Thread .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X