У меня есть сервер с базой данных SQL2008 и IIS7. Я создал службу WCF, которая обращается к SQL-серверу и возвращает набор результатов в виде List<T>
.
Моя проблема в том, что я получаю тайм-ауты при доступе к сервису от моего клиента, хотя запрос не должен занимать слишком много времени (около 1 секунды в SQL-менеджере), он получает 17.256 строк.
Когда я ограничиваю запрос чтением десятка строк, он работает нормально:
SqlCommand command = new SqlCommand("SELECT stammDatenId, position, latitude, longitude FROM geoKoordinates ORDER BY stammDatenId, position", connection);
IDataReader reader = command.ExecuteReader();
int count = 0;
while (reader.Read())
{
GeoKoordinates geoKoors = new GeoKoordinates();
geoKoors.stammDatenId = reader.GetInt32(0);
geoKoors.position = reader.GetInt32(1);
geoKoors.latitude = reader.GetDouble(2);
geoKoors.longitude = reader.GetDouble(3);
resultSet.Add(geoKoors);
if (count > 10)
break;
count++;
}
reader.Close();
Но, как вы можете догадаться, мне нужны все 17k строк. Скорость сетевого соединения не должна быть проблемой, поскольку сервер и мой клиент находятся внутри нашей локальной сети со 100-мегабитными линиями. При сохранении набора результатов в csv из SQL-Manager он составляет всего 600 КБ.
Есть идеи, где может быть узкое место и как это решить? Я понятия не имею, какая часть кода может иметь отношение к ответу на этот вопрос. Если вам нужно увидеть какие-то особенные детали, запишите это здесь, и я предоставлю это.