如何将Asp.net 2.0网站部署到服务器
.net 2.0较之于.net 1.1的一个改进就是开发web程序时没有了bin目录,对类库的引用自动放在web.config文件中。好处就是不用像以前那样显式地在bin目录下添加相关的dll文件,给开发的过程带来了便利,正由于这个,也导致了部署本地开发好的web程序到服务器的时候产生一些问题。是不是发现在本地运行一切正常的程序发布到服务器的时候不工作了,很有可能就是你在web程序中引用了.net 框架类库之外的第三方类库。
因此,无论你用xcopy方式、vs下的预编译方式、复制方式还是命令行模式下的aspnet_compiler编译方式来发布到远程服务器,在这之前你还得像.net1.1那样在你的web程序根目录下添加bin文件夹,并且将所有在你的网站中用到的第三方类库都放到该目录下。查看web.config文件能清楚的知道在你的程序中用到了哪些第三方类库。看下面的代码段:
第2、4、6、7、8、9行所引用的就是非.net2.0基础类库,因此需要将这几条所对应的dll文件复制到bin目录下,是不是这样就算完了?未必,看web.config中的下面代码:
这段代码是用到asp.net ajax控件时产生的,如果你装了Atalas就知道。因此也必须把System.Web.Extensions.dll复制到bin目录。当然,可能在你的程序并没有用到ajax.net控件,也就不必如此了,只是说需要处理所有类似的问题。
当所有必须的dll文件都复制到bin目录下时,离成功部署也就不远了,其他操作按部就班就可以了。
PS:有时候在网站开发的过程中就想测试在远程服务器的可行性,不过这对大多数程序员来说并不现实也不灵活(但很可靠)。鉴于此,推荐用虚拟机测试,虚拟机平台为wmware workstation。在虚拟机上安装服务器操作系统,如windows server 2000或2003(winxp也可以)安装好IIS和Framework2.0就可以测试了。有关虚拟机的更多介绍google一下就有了,有什么问题也可以和我交流。
下篇随笔预告:Dxperience本地化方法,本人已成功实现了汉化并部署。
因此,无论你用xcopy方式、vs下的预编译方式、复制方式还是命令行模式下的aspnet_compiler编译方式来发布到远程服务器,在这之前你还得像.net1.1那样在你的web程序根目录下添加bin文件夹,并且将所有在你的网站中用到的第三方类库都放到该目录下。查看web.config文件能清楚的知道在你的程序中用到了哪些第三方类库。看下面的代码段:
1<assemblies>
2 <add assembly="DevExpress.Web.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
3 <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
4 <add assembly="DevExpress.Data.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
5 <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
6 <add assembly="DevExpress.Web.ASPxGridView.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
7 <add assembly="DevExpress.Web.ASPxEditors.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
8 <add assembly="DevExpress.Web.ASPxSpellChecker.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
9 <add assembly="DevExpress.Web.ASPxTreeList.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
10</assemblies>
2 <add assembly="DevExpress.Web.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
3 <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
4 <add assembly="DevExpress.Data.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
5 <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
6 <add assembly="DevExpress.Web.ASPxGridView.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
7 <add assembly="DevExpress.Web.ASPxEditors.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
8 <add assembly="DevExpress.Web.ASPxSpellChecker.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
9 <add assembly="DevExpress.Web.ASPxTreeList.v8.3, Version=8.3.6.0, Culture=neutral, PublicKeyToken=5377C8E3B72B4073"/>
10</assemblies>
第2、4、6、7、8、9行所引用的就是非.net2.0基础类库,因此需要将这几条所对应的dll文件复制到bin目录下,是不是这样就算完了?未必,看web.config中的下面代码:
<httpHandlers>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
这段代码是用到asp.net ajax控件时产生的,如果你装了Atalas就知道。因此也必须把System.Web.Extensions.dll复制到bin目录。当然,可能在你的程序并没有用到ajax.net控件,也就不必如此了,只是说需要处理所有类似的问题。
当所有必须的dll文件都复制到bin目录下时,离成功部署也就不远了,其他操作按部就班就可以了。
PS:有时候在网站开发的过程中就想测试在远程服务器的可行性,不过这对大多数程序员来说并不现实也不灵活(但很可靠)。鉴于此,推荐用虚拟机测试,虚拟机平台为wmware workstation。在虚拟机上安装服务器操作系统,如windows server 2000或2003(winxp也可以)安装好IIS和Framework2.0就可以测试了。有关虚拟机的更多介绍google一下就有了,有什么问题也可以和我交流。
下篇随笔预告:Dxperience本地化方法,本人已成功实现了汉化并部署。