最近碰到一个问题,想听听大家的意见。就是现在用到的IIS6.0(2003服务器)的最大工作进程数的问题。问题点:
当进程数设置为1的时候,两台客户端同时访问相同地址的时候,Oracle会出现异常。
异常的信息是,同一连接不能开始两次事务。
我的理解是两个请求,肯定是完成一个以后再开始下一个。
但通过查看log发现,不是这样的,两个请求被同时响应了,
而且让我更不能理解的是,为什么两个请求会取到同一个Oracle的连接。望大家给分析分析原因。还是因为其它设置的问题。谢谢!

解决方案 »

  1.   

    是不是用静态变量了。一个进程中静态变量只有一份copy。
    IIS处理request会开多个线程的,因此多个线程会同时操作同一个静态变量。
      

  2.   

    默认情况下,ADO.NET 中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。还可以提供几个连接字符串修饰符来控制连接池的行为。有关更多信息,请参见MSDN中的“使用连接字符串关键字控制连接池”。
    在调用SqlConnection对象的Close方法时,SQL Client .NET数据提供程序并不实际关闭内部连接。相反,数据提供程序将该内部连接存储到一个池中,以便在以后再次使用。甚至在SqlConnection对象被处理之后,该内部连接也保留在池中。如果在以后使用相同连接字符串和凭据调用SqlConnection对象的Open方法,将会再次使用同一内部连接与数据库进行通信。参考:http://rimland.blog.163.com/blog/static/8832546200981835850969/