本文关于基于ASP.NET4开发的MVC2网站在WINDOWS2003服务器上的布署中遇到的问题及期解决方法。
一般在WIN2003服务器上都已经存在旧的ASP.NET2.0的网站在运行。而最近又使用VISUAL STUDIO 2010开发一个MVC2的网站,使用.NET 4.0。
服务器上是IIS6的WEB服务器。对于如何在II6上布署MVC2网站已经有很多资料,网上找找都有的。如果使用的是.net 3.5,发布时没有问题。网站站台的 ASP.NET 页签依然选择.NET 2.0。如下图所示:
如果是基于.net 4.0的就要选择ASP.NET的版本为:4.0.30319
当然,对于无后缀(extensionless)的URL网址访问,需要通配符映射。由于新的网站是基于.NET4的,所以通配符映射也会选择相应的文件。
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
然后,再试着打着相关网站的网页,那么,在访问旧的基于.NET2.0 的网站的页面时,会出现:
在MSDN上有资料说明同一个服务器,可以并行不同版本的.NET应用网站。那问题出在什么地方呢。在IIS服务管理器里找了一下。发现一个问题:就是这些网站都是共用同一个应用程序池。当所有的网站都是基于2.0的(包括3.0和3.5 SP1)时候,都不会出现什么问题。一但有.NET4也与之共用同一个应用程序池,就会出现上面的问题。
那么我们可以先创建另一个应用程序池(在IIS服务管理器中),如下图所示:
然后修改基于.NET4 的MVC2网站的属性:
把应用程序池由默认的DefaultAppPool改为刚才新建的AppProol Five。
这样再运行网站,一切正常。 不同.NET版本的网站可以共存在一台服务器上正常工作。
其它参读资料:
1. 《如何:在同一服务器上承载使用不同版本的 .NET Framework 的 Web 应用程序》
http://msdn.microsoft.com/zh-cn/library/dd329554.aspx
2. 《在 IIS6 ASP.NET 4.0 安装 最常遇到的四个问题 》
http://www.cnblogs.com/RuiLei/archive/2010/08/14/1799558.html