本文转自:http://www.cnblogs.com/Jimmy009/archive/2012/08/31/2664891.html

前几天终于把项目做好了,开始部署到服务器上,问题又是一大堆,遇到的第一个问题是数据库不兼容,幸好我的数据库做的时候用脚本键的表改起来还是挺快的。不兼容的原因是SQL2008中的新属性Date在数据库中SQL2005不兼容。

接着开始部署iis了,一看服务器上竟然没有装.net 4.0 framework框架,(真是悲剧,开发之前我问过负责人说是sql2008,vs2010),然后把.net 4.0 framework装好,然后把iis中新建一个网站,把目录指到网站的目录,再把iis框架选为4.0,网站重启完了,再配置SqlConnection.config文件(我把数据库连接单独出来了),把数据库连接好了,我从数据库中建立了一个单独的数据管理人员,对此用户进行了相应的权限的设置,一切就绪。

开始成功运行了网站,当时还是有一些激动的,毕竟都是把自己电脑作为服务器,从没有在服务器上部署过。

悲剧的在后面,第二天让那些客户测试,结果服务器拒绝了,真的很悲剧,看了一下系统的windows日志,知道了错误的原因。

错误的原因是因为这个服务器上既有.net2.0的项目,而我的项目是.net4.0的,虽然.net4.0可以兼容.net2.0,但是为什么会出现这个问题呢?

带着问题,我开始了寻找答案,终于找了一篇文章说,重新建立一个新的应用池,然后这个网站放在这个应用池中。

具体的操作是打开iis(这里以windows server 2003的iis6.0为例),在左侧找到一个应用程序池,然后新建一个应用程序池,就ok,看到这里,我突然想起来了看过一篇asp.net运行原理的文章,网站是在一个一个池中的(本来是有图片的,现在暂时找不到了),然后把.net4.0的网站指向这个池(你自己的网站右击属性,在跳出的对话框中选择主目录,在最后的位子有个应用池选择相应的应用池),重启一下iis,问题解决。还来又出现了一个权限的问题,在应用池中把应用程序池标识选为预定义账户的本地系统。

在此打开网站,完美解决! 文章献给那些和我遇到同样问题的博友们!

总结:在同一个iis下,使用不同的应用程序池,来解决不同版本.net程序不能正常运行的问题。不同版本的.net程序不能混合在一个应用程序池里来运行。