VS2010之基於.NET Framework 4.0程序的解決方案

VS 2010發佈後,升級到了.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,如下面的菜單


打包好之後會在項目的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。這個特殊帳號是肯定可以訪問數據庫的。

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

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章