У нас периодически возникали проблемы, из-за которых пользователи принудительно выходили из приложения.
Наша установка представляет собой веб-приложение ASP.Net/C# на Windows Server 2003 Standard Edition с SQL Server 2000 на серверной части. Недавно мы выполнили серьезное обновление продукта на сервере VMWare нашего клиента (у нас есть гостевой экземпляр, выделенный для нас), и хотя у нас не было ни одной из этих проблем с предыдущим выпуском, дополнительная сложность, которую новое обновление привносит в продукт, вызвала много проблем. Мы также запускаем SQL Server 2000 (сборка 8.00.2039 или SP4) и приложение IIS/ASP.NET (.Net v2.0.50727) на одном компьютере и подключаемся друг к другу через соединение TCP/IP.
В первую очередь выбрасываются следующие исключения:
System.IndexOutOfRangeException: не удается найти таблицу 0.
System.ArgumentException: столбец «пароль» не принадлежит таблице Table.
[Это исключение возникает в сценарии входа в систему, хотя явно доступен столбец пароля]
System.InvalidOperationException: уже существует открытый DataReader, связанный с этой командой, который необходимо сначала закрыть.
[Это происходит очень регулярно]
System.InvalidOperationException: эта SqlTransaction завершена; его больше нельзя использовать.
System.ApplicationException: ExecuteReader требует открытого и доступного подключения. Текущее состояние соединения — соединение.
System.Data.SqlClient.SqlException: время ожидания истекло. Время ожидания истекло до завершения операции или сервер не отвечает.
И только сегодня впервые:
System.Web.UI.ViewStateException: недопустимое состояние просмотра.
Мы провели нагрузочное тестирование приложения, используя то же количество одновременных пользователей, что и рабочий сервер, и не можем воспроизвести эти ошибки. Они очень непостоянны и происходят даже тогда, когда есть только 8/9/10 пользовательских подключений. Моя кишка говорит мне, что это проблемы с подключением ASP.NET - SQL Server 2000.
На данном этапе мы в значительной степени исключили ошибки уровня доступа к данным на уровне кода (у нас над этим работает команда разработчиков из 15 опытных разработчиков), поэтому мы считаем, что это проблема конкретной рабочей среды сервера.