基於.NET Framework 4.0的解決方案部署


VS 2010發布之后,隨着而來的框架版本也升級到了.NET Framework 4.0。我相信很多朋友已經在用了吧。這一篇文章總結了如何基於.NET Framework 4.0,進行解決方案部署。

之所以要單獨寫一下,是因為確實這個版本與之前的.NET Framework 2.0,3.0,3.5是不一樣的。我們自己在用的時候也摸索了一些時間。所以總結出來給大家參考參考吧,以免多走彎路。

 

重點事項:

  1. .NET Framework 4與之前的版本是可以並行的,他們並不互相干擾。也就是說,你不必在安裝.NET Framework 4之前安裝其他的任何一個版本。(前提是,你只是想運行.NET Framework 4的程序)
  2. 令很多朋友最感疑惑的是,如果安裝了.NET Framework 4,那么之前的軟件能否運行(例如基於.NET Framework 2)呢?答案是:不能
  3. 因為這種並行的情況,所以在服務端要特別注意,設置ASP.NET引擎的版本。
  4. .NET Framework 4 所支持的客戶端操作系統最低是Windows XP,服務器操作系統是Windows Server 2003。之前的Windows 2000甚至更高版本全部不受支持。
  5. .NET Framework 4的網站無法部署在Windows XP中。換而言之,Windows XP只能作為客戶端,因為XP帶的IIS 是5.1,而.NET Framework 4所要求的IIS版本最低是IIS 6.

 

部署提示:

1.首先下載有關的安裝程序

NET_Framework_4.0installer.rar

這是我整理好的四個軟件(大致一共10MB),分別如下

  • WindowsInstaller-KB893803-v2-x86(3.1).exe  如果你的機器(不管是服務器還是客戶端)什么都沒有安裝過,那么必須先裝這個installer 3.1才可以安裝Framework
  • wic_x86_enu.exe 如果你的機器是XP(通常是指客戶端),那么在安裝.NET Framework 4之前需要安裝這個WIC(Windows Image Component),不要問我這是干啥用的,我也不知道,呵呵
  • ReportViewer2010.exe 如果你的應用程序使用了報表查看器,則需要安裝這個
  • en_.net_framework_4_full_web_installer_x86_x64_ia64_516530.exe  這是在線安裝.NET Framework 4的一個引導程序。你需要確保網絡暢通。

當然,如果你希望預先下載好Framework 安裝包(例如你的客戶場景是沒有辦法連接到網絡),那么請繼續下面的操作

 

2.服務器端的一般部署過程

客戶端部署相對很簡單,你只要把上面的一些軟件安裝好,基本上就不會有什么問題,程序能運行起來。但服務器端可就沒有這么容易了。下面就假設你有一個Web Application需要部署

 

首先,如何打包這個Web Application呢?這個方面,VS2010做了一些不錯的改進,它可以直接發布,更可以打包成一個所謂的Package,如下面的菜單

image

打包好之后會在項目的Obj目錄下面,Debug目錄下面,再創建一個Package目錄,你可以看到下面的一些文件

image

 

其次,如何在服務器端部署這個Web Application呢?

你需要將上面這個Package目錄全部復制,然后發送給服務器管理員。那么服務器管理員要怎么將這個Application部署起來呢?他有幾種方式。

第一種方式,使用MS Deploy工具。

http://www.iis.net/download/webdeploy

這個工具是微軟提供出來給IIS 6和IIS 7用的,可以很方便地進行應用程序部署。你可以通過上面的地址下載到。(值得一提的是,這個工具安裝之前需要當前服務器安裝了.NET Framework 2.0 sp1)

image

如果安裝好了,我們打開IIS 之后會看到一些小的變化

image

大家可以看到,現在網站上面多出來一個“Deploy”的菜單,里面有幾個菜單項,我們現在可以點擊“Import Application”

首先,我們需要指定那個部署包的位置,是那個zip文件

image

image

image

【注意】這里可以修改連接字符串

image

【注意】因為檢測到我們是.NET Framework 4的Web Application,所以會提示將Application Pool選擇為.NET 4.0的,我們當然毫不猶豫地點擊“yes”

image

很快就安裝好了。它到底做了什么呢?其實它會把文件復制到wwwroot里面來

image

但是,這里需要注意的是,它是隨機選擇了一個.NET Framework 4.0 的Application Pool, 例如在我的機器上是這樣的

image image

有的時候,我們可能會發現程序運行不起來,例如

image

經驗告訴我們,凡是503錯誤,多半是與應用程序池有關系。

我嘗試重啟這個程序池,問題依舊

image

然后,我發現這個程序池有些特殊之處在於它的Managed Pipleline Mode是Integrated,是不是這個有問題呢?

我嘗試選擇了一個Managed Pipleline Mode為Classic的應用程序池,例如

image

重新刷新一下就可以正常運行我的應用程序了

image

到這里,我們就完成了服務器端應用程序的部署。這個演練中,我們使用了MS Deploy工具。但事實上,不用工具也是一模一樣可以做到的。只要記住下面兩點

1. 應用程序池要基於.NET Framework 4

2. 應用程序池的Managed Pipleline Mode要選擇為Classic

 

最后,還有一個可能會遇到的問題,就是如果你的應用程序會連接到數據庫,而且數據庫連接字符串是像下面這樣寫的

Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True

那么,大家要知道的一個情況是,因為你是Integrated security=true,所以最后訪問數據庫時所使用的身份是應用程序池的標識。那么,很顯然地,你需要確保這個標識有訪問數據庫的權限。

image

【注意】如果是訪問本地的服務器和數據庫,為簡單起見,你可以直接設置為LocalSystem。這個特殊帳號是肯定可以訪問數據庫的。

當然,更加嚴謹的做法,是指定一個特定的帳號,這個帳號被授予了特定數據庫的訪問權限。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com