正在中止线程。!   在 SNINativeMethodWrapper.SNIPacketGetConnection(IntPtr packet)
   在 System.Data.SqlClient.TdsParserStateObject.ProcessSniPacket(IntPtr packet, UInt32 error)
   在 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParserStateObject.ReadPacket(Int32 bytesExpected)
   在 System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
   在 System.Data.SqlClient.TdsParserStateObject.ReadByte()
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
   在 BLL.V_JCZJZYB.SelectXKinfobyNJBS(V_JCZJZYB_VIEW_VO v_jczjzyb_v)
public DataSet SelectXKinfobyNJBS(VO.V_JCZJZYB_VIEW_VO v_jczjzyb_v){
try
                {                    if (ed.SCtSqlcon.State == ConnectionState.Closed)
                    {
                        ed.SCtSqlcon.Open();
                    }
                    SqlDataAdapter sda = new SqlDataAdapter();
                    sda.SelectCommand = new SqlCommand();
                    sda.SelectCommand.Connection = ed.SCtSqlcon;
                    sda.SelectCommand.CommandText = "proc_selectXKinfobyNJBS";
                    sda.SelectCommand.CommandType = CommandType.StoredProcedure;                    SqlParameter paramnjbs = new SqlParameter("@njbs", SqlDbType.Int);
                    paramnjbs.Direction = ParameterDirection.Input;
                    paramnjbs.Value = v_jczjzyb_v.NJBS;
                    sda.SelectCommand.Parameters.Add(paramnjbs);                    //DataSet ds = new DataSet();
                    sda.Fill(ds);
                    ed.SCtSqlcon.Close();
                    //sda.Dispose();
                    return ds;
                }
                catch (Exception e)
                {
                    try
                    {
                        pub_trackwrong pt = new pub_trackwrong();
                        pt.SWrongDescription = e.Message + "!" + e.StackTrace ;
                        pt.SWrongURL = "@BLL.V_JCZJZYB.SelectXKinfobyNJBS(VO.V_JCZJZYB_VIEW_VO v_jczjzyb_v)" + "@njbs:" + v_jczjzyb_v.NJBS.ToString();
                        pt.Track();
                    }
                    catch { }
                    return null;
                }
                finally
                {
                    if (ed.SCtSqlcon.State == ConnectionState.Open)
                    {
                        ed.SCtSqlcon.Close();
                    }
                }
}找了多次觉得代码没有问题!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    应该是你的数据操作超时了,提交线程回滚。
    ThreadAbortException SNINativeMethodWrapper.SNIPacketGetConnection设置数据库连接超时时间
    ed.SCtSqlcon.ConnectionTimeout = 300; //300秒另外,你可能要在web.config中设置Request Timeout时间
    <configuration>
    <system.web>
    <httpRuntime=20   executionTimeout="36000"  />
    </system.web>
    </configuration>
    好像最大值就是1小时左右,如果太长了,你就要想办法优化你的叶面程序了。
      

  2.   

    头一次看到,在catch块内部还能写try语句