Ошибка в IIS для приложения ASP.Net - PullRequest
0 голосов
/ 01 августа 2011

Я иногда сталкиваюсь с этой ошибкой.Когда я перезагружаю IIS, эта проблема решена.На веб-сервере (IIS) размещено более 10 сайтов, поэтому я не могу перезапустить его одновременно.

System.Data.SqlClient.SqlException: Distributed transaction completed. Either enlist
    this session in a new transaction or the NULL transaction. at 
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean 
    breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 
    exception, Boolean breakConnection) at 
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at 
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, 
    SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject 
    stateObj) at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() at 
    System.Data.SqlClient.SqlDataReader.get_MetaData() at 
    System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior 
    runBehavior, String resetOptionsString) at         
    System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, 
    RunBehavior runBehavior, Boolean returnStream, Boolean async) at 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior 
    runBehavior, Boolean returnStream, String method, DbAsyncResult result) at 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior 
    runBehavior, Boolean returnStream, String method) at 
    System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at 
    System.Data.SqlClient.SqlCommand.ExecuteReader() at MyLibrary.LoadDDList(DropDownList& 
    curDDL, String strTextField, String strValueField, String strTable, String svarconditional)

Пожалуйста, помогите мне найти решение, которое предпочтительно не требует перезапуска IIS.

1 Ответ

0 голосов
/ 23 августа 2011

У вас есть функция LoadDDList в классе MyLibrary.

Для этой функции требуется Try Catch вокруг команды ExecuteReader ().

Try
    mySqlCommand.ExecuteReader()
Catch sqlException As SqlClient.SqlException
    If sqlException.ErrorCode >= 10 Then
        Throw
    End If
End Try

В перехвате вы хотите проверитьдля ErrorCode меньше 10. Если это меньше 10, то это просто предупреждающее сообщение, и вы можете его проигнорировать.Если оно равно 10 или больше, вам необходимо его перебросить, поскольку это фактическая ошибка SQL (ошибка синтаксического анализа, неверная таблица и т. Д.).

Если посмотреть на ваш стек, это всего лишь предупреждение, и его следует игнорировать.Вам нужно исправить свой код, чтобы не вызывать сбой IIS при нажатии этого предупреждения SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...