Прерывистый тайм-аут соединения в Azure SQL по запросу AJAX

Я искал эту ошибку, которая периодически возникает при вызове AJAX на веб-сайт Azure ASP.NET, и сегодня я, наконец, поймал его в наших журналах. Я подозревал, что блокировка блокирует операцию, но похоже, что она не пыталась подключиться к базе данных Azure SQL.

Вот сообщение об ошибке:

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 
This failure occurred while attempting to connect to the routing destination.
The duration spent while attempting to connect to the original server was -
[Pre-Login] initialization=28; handshake=43; [Login] initialization=0; authentication=0; [Post-Login] complete=2;  

Это строка подключения, которую я использую:

Server=tcp:<server>,1433;Database=<database>;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30

Оба сайта и база данных Azure SQL находятся в одном регионе. Шкала базы данных - стандартная - S0, а веб-сайт Azure - стандартный - малый экземпляр.

Кто-нибудь из вас столкнулся с этой проблемой?

Ответ 1

Похоже, проблема связана с подключением клиента к Интернету. Если вы делаете вызов Ajax на клиентском JavaScript, это не имеет значения (по крайней мере, насколько производительность идет), независимо от того, находятся ли веб-приложение и база данных в одном регионе. Очень медленное соединение вызовет тайм-аут.

Так как это прерывисто, я рекомендую поймать эту ошибку в JavaScript и дать приглашение клиенту повторить попытку сохранения.