首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

[急]Remoting + MSSQL 服务端程序[疑难杂症]?该怎么处理

2012-02-29 
[急]Remoting + MSSQL 服务端程序[疑难杂症]?//启动RemotingHttpChannelMyHttpChannelnewHttpChannel(500

[急]Remoting + MSSQL 服务端程序[疑难杂症]?
//启动Remoting    
HttpChannel     MyHttpChannel     =     new     HttpChannel(50001);    
ChannelServices.RegisterChannel(MyHttpChannel,     false);    
RemotingConfiguration.RegisterWellKnownServiceType(Type.GetType( "Service ",     true,     false),     "MyServer ",     WellKnownObjectMode.SingleCall);    
 
 
//调用MSSQL    
 
public     int     Address_Degree(string     S_NAME,     string     M_NAME,     int     A_PART)    
{    
SqlParameter[]     Parameters     =     {     new     DB.Server().S_NAME,     new     DB.Movie().M_NAME,     new     DB.Address().A_PART     };    
Parameters[0].Value     =     S_NAME;    
Parameters[1].Value     =     M_NAME;    
Parameters[2].Value     =     A_PART;    
return     new     MSSQL(new     DB().Connstring).ProcedureRun( "Address_Degree ",     Parameters);    
}    
 
///     <summary>    
///     处理     Microsoft     Sql     Server     2000     的数据类。    
///     </summary>    
public     class     MSSQL    
{    
              private     SqlConnection     Conn;    
 
              public     MSSQL(string     ConnString)    
              {    
                              Conn     =     new     SqlConnection(ConnString);    
              }    
 
              #region     Error_Handler    
              public     void     Error_Handler(string     cmdText,     Exception     e)    
              {    
                              try    
                              {    
                                              File.AppendAllText(System.Environment.CurrentDirectory     +     @ "\ "     +     DateTime.Now.ToString( "yyyyMMdd ")     +     ".txt ",     DateTime.Now.ToString()     +     "     "     +     cmdText     +     "                 "     +     e.Message     +     Environment.NewLine);    


                              }    
                              catch     (Exception)    
                              {    
 
                              }    
              }    
              #endregion    
 
              #region     ExecuteReader    
              public     ArrayList     ExecuteReader(string     cmdText)    
              {                                
                              SqlCommand     cmd     =     new     SqlCommand(cmdText,     Conn);    
                              ArrayList     Arr     =     new     ArrayList();    
                              try    
                              {    
                                              cmd.Connection.Open();    
                                              SqlDataReader     dr     =     cmd.ExecuteReader();    
                                              while     (dr.Read())    
                                              {    
                                                              Arr.Add(dr[0]);    
                                              }    
                                              dr.Close();    
                              }    
                              catch     (SqlException     e)    


                              {    
                                              Error_Handler(cmdText,     e);    
                              }    
                              finally    
                              {    
                                              cmd.Dispose();    
                                              cmd.Connection.Close();                                                    
                              }    
                              return     Arr;    
              }    
              #endregion                
 
              //Int    
 
              #region     ProcedureRun    
              public     int     ProcedureRun(string     ProcedureName)    
              {                                
                              SqlCommand     cmd     =     new     SqlCommand(ProcedureName,     Conn);    
                              int     row     =     0;    
                              try    
                              {    
                                              cmd.Connection.Open();    
                                              cmd.CommandType     =     CommandType.StoredProcedure;    
                                              row     =     cmd.ExecuteNonQuery();    


                              }    
                              catch     (SqlException     e)    
                              {    
                                              Error_Handler(ProcedureName,     e);    
                              }    
                              finally    
                              {    
                                              cmd.Dispose();    
                                              cmd.Connection.Close();                                                    
                              }    
                              return     row;    
 
              }    
              #endregion    
 
              //DataSet    
 
              #region     ProcedureRun    
              public     DataSet     ProcedureRun(string     ProcedureName,     string     TablenName)    
              {                                
                              SqlDataAdapter     cmd     =     new     SqlDataAdapter(ProcedureName,     Conn);    
                              cmd.SelectCommand.CommandType     =     CommandType.StoredProcedure;    
                              DataSet     ds     =     new     DataSet();    
                              try    
                              {    
                                              Conn.Open();                                                


                                              cmd.Fill(ds,     TablenName);    
                              }    
                              catch     (System.Data.SqlClient.SqlException     e)    
                              {    
                                              Error_Handler(ProcedureName,     e);    
                              }    
                              finally    
                              {    
                                              cmd.Dispose();    
                                              Conn.Close();        
                              }    
                              return     ds;    
 
              }    
              #endregion    
 
              //Object    
 
              #region     GetSingle    
              ///     <summary>    
              ///     执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。    
              ///     </summary>    
              ///     <param     name= "SQLString "> </param>    
              ///     <returns> </returns>    
              public     object     GetSingle(string     ProcedureName,     SqlParameter[]     Parameters)    
              {                                
                              SqlCommand     cmd     =     new     SqlCommand(ProcedureName,     Conn);    
                              object     Temp     =     null;    


                              try    
                              {    
                                              cmd.Connection.Open();    
                                              cmd.Parameters.AddRange(Parameters);    
                                              cmd.CommandType     =     CommandType.StoredProcedure;    
                                              Temp     =     cmd.ExecuteScalar();    
                                              if     ((Object.Equals(Temp,     null))         &brvbar;     &brvbar;     (Object.Equals(Temp,     System.DBNull.Value)))    
                                              {    
                                                              return     null;    
                                              }    
                              }    
                              catch     (System.Data.SqlClient.SqlException     e)    
                              {    
                                              Error_Handler(ProcedureName,     e);    
                              }    
                              finally    
                              {    
                                              cmd.Dispose();    
                                              cmd.Connection.Close();    


                              }    
                              return     Temp;    
              }    
              #endregion                                                    
 
              //ArrayList    
 
              #region     ProcedureRun    
              public     ArrayList     ProcedureRun(string     ProcedureName,     bool     IsField)    
              {                                
                              SqlCommand     cmd     =     new     SqlCommand(ProcedureName,     Conn);    
                              ArrayList     Arr     =     new     ArrayList();    
 
                              cmd.CommandType     =     CommandType.StoredProcedure;    
 
                              try    
                              {    
                                              cmd.Connection.Open();    
                                              SqlDataReader     dr     =     cmd.ExecuteReader();    
                                              if     (IsField)    
                                              {    
                                                              #region     Field    
                                                              while     (dr.Read())    
                                                              {    


                                                                              Arr.Add(dr[0].ToString());    
                                                              }    
                                                              #endregion    
                                              }    
                                              else    
                                              {    
                                                              #region     Row    
                                                              if     (dr.Read())    
                                                              {    
                                                                              for     (int     i     =     0;     i     <     dr.FieldCount;     i++)    
                                                                              {    
                                                                                              Arr.Add(dr[i]);    
                                                                              }    
                                                              }    


                                                              #endregion    
                                              }    
                                              dr.Close();    
                              }    
                              catch     (SqlException     e)    
                              {    
                                              Error_Handler(ProcedureName,     e);    
                              }    
                              finally    
                              {    
                                              cmd.Dispose();    
                                              cmd.Connection.Close();    
                              }    
                              return     Arr;    
 
              }    
              #endregion    
}    
 
说明:    
用户人数300以上;    
MSSQL设置:全部默认设置    
 
症状:    
运行一定时间后出现 "超时时间已到。在操作完成之前超时时间已过或服务器未响应。 ",一旦出现错误后服务端程序再也不能进行服务了,所有操作将报同样错误.把服务端程序重新启动下又OK了。    
 


[解决办法]
mark
我正考虑用remorting,就怕出现这个问题,期待解决,关注
[解决办法]
看看是不是数据库处理不过来的问题
[解决办法]
mark
[解决办法]
自定义负载平衡试试

热点排行