我们公司的代码是放在一个IIS 网站的,我们有一个根据子域名连接多个数据库功能,但是一直出现数据混乱问题。我纠结了很久,最终将问题锁定在 IIS 上,于是我新创建一个测试网站,自己一个人测试的时候,完全没有数据混乱的问题。
关于数据切换错乱问题,今天算是得出了一个正确的答案,我模拟生产服务器上的网站添加两个子域名。但是,其实在生产服务器是有很多人在访问的,而我自己的服务器只有自己在访问,所以,我在测试自己的网站是,没有其他人访问切换掉IIS 应用程序池里面的数据库配置,就像没有问题一样。
其实IIS 一个应用程序池中的配置是统一的,所有访问者都是在使用这个应用连接池,在一个用户访问通过连接修改了配置(static类)后(如:数据库配置),另一个访问者也会被动的访问另一个数据库。
处理这种问题有两种解决方法:
《1》我们只能让一个IIS网站,连接一个数据库,要切换数据库,就跳转到另一个网站,不能在同一个网站去切换数据库,这样做势必会出现数据混乱。
《2》代码重构,不要将数据库连接放在静态的类中,可以用session 保存。