.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文件能清楚的知道在你的程序中 用到了哪些第三方類庫。看下面的代碼段:
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、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>
這段代碼是用到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一下就有了,有什麼問題也可以和我交流。