在页面中创建数据库(逻辑)连接,而不是在页面之前。asp.net各页面处理是并发的,它们不能共享数据库连接对象。如果你只是在自己单机上进行简单测试,你学习不到asp.net服务器知识。

解决方案 »

  1.   

    可以通过global的Application_BeginRequest,它是运行在所有页面程序之前,然后你可以用它来保存session,通过这种方法来实现数据库切换。
      

  2.   

    没有几个人要读取Session中的数据时是在global.asax中写的。都是在页面中处理。
      

  3.   

    jimil的想法我的一样,但是sp1234说的,就是在每个页面的OnInit()或Page_Load()事件中,每一个页面进行处理吗?
      

  4.   

    在页面的 Onit 或者 Page_Load?干什么?要读写关系数据库,你就在读写代码的前一行代码去创建数据库连接就行了(当然,为了绝对保证避免占用——而要尽快关闭——连接,应该写在 using {} 结构中)。我说过了,你不要把个人单机上那点代码的测试拿倒asp.net生产服务器上去,那是错误的,那会经常出现“连接池已满”这样的系统崩溃事件。别说放到页面“之前”了,就算是释放到“Page_Load中”也没有必要。
      

  5.   

    你可以写一个基类BasePage继承自Page.然后在BasePage的Page_Init事件里写:if (Request.Url.Host == "abc.xxx.com"){
       //连接第一个数据库
    }
    else if (Request.Url.Host == "def.xxx.com"){
      //连接第二个数据库
    }
    ...
      

  6.   

    多谢各位的热心帮助,sp1234说的,有我有些不太明白,我基础不太扎实。
    bwangel说的我比较理解,也是按你说的作了。
    多谢各位。
    平均发分吧。
      

  7.   

    sp1234是说,像你这种要求应该是在自己机子上写helloworld这种程序玩玩是可以的,不适用于实际项目,因为可能会带来不稳定,造成维护困难,不过bwangei说的没错,这个方法比我的要好得多。最后提一点,像这种要求除非是整合型项目,不然普通项目,还是建一个库为好,起码,我几千万级数据库还只使用两个库,而且也不是按域名这种访问方式来判断使用哪个库,而是按实事需求来判断,像通过域名来判断所用数据库,感觉太不靠谱了
      

  8.   

    十分感谢jimil,让我这个菜鸟又学习了。
    有机会能与你们多学习,应该是十分惬意的事情哈。