天天看點

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

|>> 官方網站:

導航統計公告2008年5月重新啟用,将作為本人技術方面的部落格。

有部分随筆是之前在别的網站釋出的,或者根據以前筆記整理 的。

絕大多數随筆均為原創,标題中标明【轉載】者除外。

随筆分類随筆檔案個人連結微軟中國研發團隊相關下載下傳積分與排 名 @張磊_larry.zhang 我比較有興趣的是你幹啥要用那個sql_variant類型,呵呵 --陳希章 [quote]陳希章:我認為這個問題應該無解。EF是基于強類型的,而那個sql_variant不是一個強類型,呵呵。你在什麼場合下會用這個類型呢 錯誤消息已經很清楚了。 Message 1 Th... --張磊_larry.zhang @陳希章到處亂跑中啊 --flyingchen [quote]flyingchen: @陳希章我來了北京,呵呵[/quote] 呵呵,居然又跑到北京去了啊,我今年倒是經常去蘇州的 --陳希章 @陳希章我來了北京,呵呵 --flyingchen [quote]張磊_larry.zhang:老大,我曾經有個資料表的字段是sql_variant類型,EF無法映射該類型最後導緻資料層同時使用了 EF和企業庫不知老大有沒有碰到過[/quote] ... --陳希章 [quote]flyingchen:來看看陳老師[/quote] 謝謝啊,好久不見了:) --陳希章 老大,我曾經有個資料表的字段是sql_variant類型,EF無法映射該類型最後導緻資料層同時使用了EF和企業庫不知老大有沒有碰到過 --張磊_larry.zhang 來看看陳老師 --flyingchen [quote]技術,趨勢:更值得一提的就是,比如裝IE新版本,首先要找個同語言的吧,還要分什麼X86,X64.簡直就是惡搞,比如我中文系統,我就 想裝個E文的IE怎麼了?[/quote] 底層架構都不一... --公爵 好東東,收藏起來 --Vseen[ Aloner ] [quote]諾貝爾: .net 的版本政策真的很失敗. 就不能預設是向下支援,然後特殊情況需要配置麼? [/quote] 這個問題有點複雜,至少在我們作為局外人來看是這樣 --陳希章 @wade black 其實2.0确實不錯 --陳希章 @builderman 嗯,我隻是說我不會用XP去做伺服器 --陳希章 .net 的版本政策真的很失敗. 就不能預設是向下支援,然後特殊情況需要配置麼? --諾貝爾 閱 讀排行榜評論排行榜

VS 2010釋出之後,随着而來的架構版本也更新到了.NET Framework 4.0。我相信很多朋友已經在用了吧。這一篇文章總結了如何基于.NET Framework 4.0,進行解決方案部署。

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

重點事項:

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

部署提示:

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

這是我整理好的四個軟體(大緻一共10MB),分别如下

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

如果你想要下 載.NET Framework 4 Client Profile ,則通路這裡 http://www.microsoft.com/downloads/details.aspx?FamilyID=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&displaylang=en 大緻是41MB的安裝包,與Full相差大緻7MB,我個人覺得這就沒有啥優勢了。而且選用了Client Profile的話,有好些個功能都不能用。其實更關鍵在于你不知道哪些能用,哪些不能用(确實有一些文檔介紹他們的差別,但誰有那閑工夫去記住那麼多區 别呢)。是以,我們全部采用Full,免得麻煩。

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

用戶端部署相對很簡單,你隻要把上面的一些軟體安裝好,基本上就不會有什麼問題,程式能運作起來。但伺服器端可就沒有這麼容易了。下面就假設你有一 個Web Application需要部署

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

打包好之後會在項目的Obj目錄下面,Debug目錄下面,再建立一個Package目錄,你可以看到下面的一些檔案

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

你需要将上面這個Package目錄全部複制,然後發送給伺服器管理者。那麼伺服器管理者要怎麼将這個Application部署起來呢?他有幾種 方式。

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

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

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署
[.net framework4.0]基于.NET Framework 4.0的解決方案部署
[.net framework4.0]基于.NET Framework 4.0的解決方案部署

【注意】這裡可以修改連接配接字元串

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

很快就安裝好了。它到底做了什麼呢?其實它會把檔案複制到wwwroot裡面來

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署
[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

我嘗試重新開機這個程式池,問題依舊

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

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

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

重新重新整理一下就可以正常運作我的應用程式了

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

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

1. 應用程式池要基于.NET Framework 4

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

最後,還有一個可能會遇到的問題,就是如果你的應用程式會連接配接到資料庫,而且資料庫連接配接字元串是像下面這樣寫的

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

那麼,大家要知道的一個情況是,因為你是Integrated security=true,是以最後通路資料庫時所使用的身份是應用程式池的辨別。那麼,很顯然地,你需要確定這個辨別有通路資料庫的權限。

[.net framework4.0]基于.NET Framework 4.0的解決方案部署

【注意】如果是通路本地的伺服器和資料庫,為簡單起見,你可以直接設定為LocalSystem。這個特殊帳号是肯定可以通路資料庫的。

當然,更加嚴謹的做法,是指定一個特定的帳号,這個帳号被授予了特定資料庫的通路權限。

posted on 2010-06-02 18:40 陳希章 閱讀(1966) 評論(28)  編輯 收藏 所屬分類:

#1 樓 2010-06-02 18:54 dreamskyyu

@dreamskyyu

其實我這就是Windows 7.呵呵。你可以馬上試一下

我感覺, Window7比Windows 2003還要友善一些   回複引用檢視

之前配置網站也是因為應用池的原因,摸索了3天才明白症結所在。   回複引用檢視

我發現一個問題,不安裝以前的.NET3.5的話,你在建立一個空的C++項目時,會産生錯誤..樓主試 一下,,按理,一個本機的VC++項目與.NET一點關系也沒有   回複引用檢視

  回複引用檢視

恩,微軟要好好整下這個架構

從1.1,2.0 3.0 3.5 4.0全裝下來要多大空間啊

硬碟便宜也不能這樣折 騰啊   回複引用檢視

樓主别誤導人家啊!.NET Framework 4.0以前的程式是可以在僅裝有.NET Framework 4.0的機器中運作的。隻要在配置檔案中添加以下設定即可。

<configuration>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

</configuration>

回 複引用

@8Y

關于這一點,我大緻也是知道可以通過修改這個配置做出一些示範例子來,例如Hello,world之類的。

但我對此 仍然是謹慎樂觀的。事實上因為很多程式集都是在架構級别被重寫過了,很難保證一個真正複雜的程式是否真的能運作起來。

一個現實的例子就是 SQL Server自帶的很多工具,如果不裝.NET Framework 2的話,就通通不能運作了。

這估計也是之是以會強調并行安 裝的原因所在,像當年.NET 2和.NET 1.X時代的問題是一樣的

僅供參考   回複引用檢視

  回複引用檢視

呵呵,那估計有門。你試試看。

我自己不傾向于在XP上面裝IIS 6.   回複引用檢視

@老Q

@技術,趨勢

我也覺得架構方面到目前為止看起來也是一個逐漸完善的過程。我們經曆和參與了這個過程,有時候是幸運, 有時候也是不幸,呵呵

回複引用檢視

反正微軟正在面臨着混亂是不争的事實,尤其搞的是,同一個架構比如.net  framework2。0 在不同的語言版本上還不能相容。有時要裝中文的,有時又需要英文的。比如Windows的更新,不是同語言的還裝不上。這個就 是真無語了。還是一字“悲劇”   回複引用檢視

更值得一提的就是,比如裝IE新版本,首先要找個同語言的吧,還要分什麼X86,X64.簡直就是惡搞,比如我中文系統,我就想裝個E文的IE怎麼 了?   回複引用檢視

冷靜,冷靜   回複引用檢視

試過之後才會知道,為什麼不傾向呢

隻是隻能建一個預設的網站,不像server一樣可以建多個網站

回複引用檢視

  回複引用檢視

  回複引用檢視

這個問題有點複雜,至少在我們作為局外人來看是這樣   回複引用檢視

底層架構都不一樣了,你還要求軟體通用?那是不可能的。

底層架構都不一樣了,你還要求軟體通用?那是不可能的。   回複引用

郵箱:(僅部落客可見)

[使用Ctrl+Enter鍵快速送出評論]

Powered by:

部落格園

Copyright © 陳希章