У меня была такая же проблема, хотя и с запросами на обслуживание к базе данных SQL.
Это то, что у меня было в журнале ошибок службы:
System.Data.SqlClient.SqlException: произошла ошибка транспортного уровня при отправке запроса на сервер. (поставщик: поставщик TCP, ошибка: 0 - существующее соединение было принудительно закрыто удаленным хостом.)
У меня есть набор тестов C #, который тестирует сервис. Служба и БД находились на внешних серверах, поэтому я подумал, что это может быть проблемой. Поэтому я развернул службу и БД локально, но безрезультатно. Проблема продолжалась. Набор тестов - даже не сложный тест производительности, поэтому я понятия не имел, что происходит. Один и тот же тест не удавался каждый раз, но когда я отключал этот тест, другой тест не проходил постоянно.
Я попробовал другие методы, предложенные в Интернете, которые тоже не работали:
- Увеличение значений реестра TcpMaxDataRetransmissions и TcpMaxConnectRetransmissions .
- Отключите параметр «Общая память» в диспетчере конфигурации SQL Server в разделе «Клиентские протоколы» и сортируйте TCP / IP по 1-му в списке.
- Это может произойти, когда вы тестируете масштабируемость с большим количеством попыток подключения клиента. Чтобы устранить эту проблему, используйте утилиту regedit.exe, чтобы добавить новое значение DWORD с именем SynAttackProtect в раздел реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ со значением данных 00000000.
Моим последним средством было использовать старость, говоря: «Попробуй и попробуй снова». Поэтому я вложил операторы try-catch, чтобы гарантировать, что в случае потери соединения TCP / IP в низком протоколе связи он не просто сдается, а пытается снова. Теперь это работает для меня, но это не очень элегантное решение.