<dataSource name="127.0.0.1" connectionString="User ID=${userid};Password=${password};Host=${datasource};Port=${port};Database=${database}; 
                Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=15;Unicode=true;Connection Timeout=30;UnpreparedExecute=true;"/>
  这是我门项目是用的Devart 链接字符串。
  系统我是设置的自动登录第一次登录的时候没有问题。第二次启动软件登录的时候不能正常的自动登录报异常。下面是异常日志:
2011-10-08 11:38:36,218 [TcpClientReceiveThread TcpId:127.0.0.1:5592] ERROR Banger.Utility.ExLog [(null)] - 调用的目标发生了异常。System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Net.Sockets.SocketException: 在一个非套接字上尝试了一个操作。
   在 System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue, Boolean silent)
   在 System.Net.Sockets.Socket.SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, Int32 optionValue)
   在 System.Net.Sockets.TcpClient.set_ReceiveTimeout(Int32 value)
   在 Devart.Common.ae.a(Int32 A_0)
   在 Devart.Data.PostgreSql.l.b(Int32 A_0)
   在 Devart.Data.PostgreSql.g.a(Int32 A_0)
   在 Devart.Data.PostgreSql.PgSqlCommand.InternalPrepare(Boolean implicitPrepare, Int32 startRecord, Int32 maxRecords)
   在 Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
   在 Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   在 IBatisNet.DataMapper.Commands.DbCommandDecorator.System.Data.IDbCommand.ExecuteReader()
   在 IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForObject[T](RequestScope request, ISqlMapSession session, Object parameterObject, T resultObject)
   在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject[T](ISqlMapSession session, Object parameterObject, T resultObject)
   在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject[T](ISqlMapSession session, Object parameterObject)
   在 IBatisNet.DataMapper.SqlMapper.QueryForObject[T](String statementName, Object parameterObject)
   在 Banger.Dao.IbatisMapper.IbatisObjectMapper.QueryEntity(String statement, Object conds)
   在 Banger.Css.Common.CommonDao.QueryEntity(String statement, Object conds) 位置 E:\工作\客户服务系统\trunk\03.编码\CssServer\Source\Banger.Css.Common\CommonDao.cs:行号 56
   在 Banger.Css.Common.CommonDao.QueryEntity(String statement, Hashtable conds) 位置 E:\工作\客户服务系统\trunk\03.编码\CssServer\Source\Banger.Css.Common\CommonDao.cs:行号 51
   在 Banger.Css.PermissionModule.Dao.UserDao.GetLoginedUser(String loginId, String password) 位置 E:\工作\客户服务系统\trunk\03.编码\CssServer\Source\Banger.Css.PermissionModule\Dao\UserDao.cs:行号 38
   在 Banger.Css.PermissionModule.Service.UserSessionService.UserLogin(String loginId, String password) 位置 E:\工作\客户服务系统\trunk\03.编码\CssServer\Source\Banger.Css.PermissionModule\Service\UserSessionService.cs:行号 31
   --- 内部异常堆栈跟踪的结尾 ---
   在 Banger.Corba.Orb.xb3d1bea9caff5c10.x72a590f282d553ee(x6520ec6400de036f xd1d55a56253db2df, OrbClient xc30cd6401e231d63, MethodInfo x1306445c04667cc7, OrbService x113c7c682316fcd2, Boolean xa18d4182f3bcfa12, Object[] x290a8cdbc9dbb3c1, Exception xc5f24384ad39b93a)
   在 Banger.Corba.Orb.xb3d1bea9caff5c10.x18dfca7c5fd2402f(x6520ec6400de036f xd1d55a56253db2df, OrbClient xc30cd6401e231d63)
   在 Banger.Corba.Orb.OrbClient.x352a50113e6fd6df()
   在 Banger.Corba.Orb.OrbServer.xbbe0e30c7a733996(AsyTcpConnector x54fc596d5a45962d, Byte[] x4a3f0a05c02f235f)
我把那个链接字符串的UnpreparedExecute=true改成UnpreparedExecute=false就没问题。但是不用连接池的话。性能方面就会有问题。。求解!!!!在线等。。急。分不多了。。只有100了

解决方案 »

  1.   

    UnpreparedExecute和连接池是没有关系的只是决定执行sql命令模式是否通过准备执行的方式
      

  2.   

    只是我现在没有定位到问题点在哪里只是找到了。把UnpreparedExecute换成false就没问题。。
      

  3.   


    错了错了。。属性弄错了Pooling是这个搞成false
      

  4.   


    错了错了。。属性弄错了Pooling是这个搞成false也就是不使用池
      

  5.   

    在第2次连接的时候就提示出错,没有执行SQL语句?第1次正常退出?
      

  6.   


    UnpreparedExecute=false, 性能应该更好些。
    =true,意味着硬解析。
      

  7.   

    额。。错了。。是把不用连接池那个属性为false。就OK的