IIS for ASP错误.网络应用程序



我偶尔会遇到这个错误。当我重新启动IIS时,这个问题就解决了。web服务器(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的解决方案。

在MyLibrary类中有一个名为LoadDDList的函数。

这个函数需要在ExecuteReader()命令周围执行Try Catch。

Try
    mySqlCommand.ExecuteReader()
Catch sqlException As SqlClient.SqlException
    If sqlException.ErrorCode >= 10 Then
        Throw
    End If
End Try
在catch中,您希望检查ErrorCode是否小于10。如果它小于10,那么它只是一个警告信息,您可以忽略它。如果是10或更大,则需要重新抛出它,因为这是一个实际的SQL错误(解析错误、无效表等)。

查看您的堆栈,这只是一个警告,应该忽略。你需要修复你的代码,这样当你遇到这个SQL警告时,你就不会使IIS崩溃。

相关内容

最新更新