HttpWebRequest在SQLCLR中第一次运行缓慢

Rob*_*Rob 5 sql-server-2005 sqlclr

在CLR存储过程中进行HttpWebRequest时(根据下面的代码),在(重新)启动Sql Server之后或在给定(但不确定)的时间段之后的第一次调用等待相当长的时间. GetResponse()方法调用.

有没有办法解决这个问题,不涉及"黑客",如每隔几分钟运行一次Sql Server Agent作业,以确保代理进行第一次"慢速"调用,而不是"真正的"生产码?

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;
}
Run Code Online (Sandbox Code Playgroud)

(为简洁起见,已删除错误处理和其他非关键代码)


另请参见此Sql Server论坛主题.

ros*_*ead 10

这对我来说是个问题HttpWebRequest.这是由于该类正在寻找使用的代理.如果将对象的Proxy值设置为null/ Nothing,它将直接拉链.