电竞比分网-中国电竞赛事及体育赛事平台

分享

ASP.Net在64位環(huán)境開(kāi)發(fā)部署常見(jiàn)問(wèn)題

 instl 2018-03-12

越來(lái)越多的開(kāi)發(fā)團(tuán)隊(duì)開(kāi)始使用64位操作系統(tǒng)作為開(kāi)發(fā)環(huán)境,也計(jì)劃將應(yīng)用部署在安裝有64位操作系統(tǒng)的服務(wù)器上。對(duì)于ASP.Net開(kāi)發(fā)者來(lái)說(shuō),使用64位環(huán)境開(kāi)發(fā)部署需要注意以下幾個(gè)問(wèn)題,可在項(xiàng)目過(guò)程中節(jié)省不少時(shí)間。

 

1.ASP.Net在64位環(huán)境開(kāi)發(fā)部署的常見(jiàn)故障

 

很多開(kāi)發(fā)者在使用64位操作系統(tǒng)時(shí),在ASP.Net應(yīng)用中使用了指定64位版本程序庫(kù)。例如一些專門的數(shù)據(jù)庫(kù)驅(qū)動(dòng)、設(shè)備驅(qū)動(dòng),但依然出現(xiàn)以下錯(cuò)誤提示信息:

 

1
未能加載文件或程序集“……”或它的某一個(gè)依賴項(xiàng),試圖加載格式不正確的程序。

 

造成這種故障的原因是,大部分ASP.Net編譯器和容器并沒(méi)有默認(rèn)設(shè)置為64位,而是以32位兼容模式運(yùn)行。此時(shí),如果將程序庫(kù)更換為32位,則系統(tǒng)運(yùn)行正常。若打算堅(jiān)持使用64位程序集,可依據(jù)下文所述方法進(jìn)行設(shè)置。

2.Visual Studio自帶的IISExpress設(shè)置

在64位操作系統(tǒng)中,Visual Studio自帶的IIS Express是32位的。如果需要Visual Studio使用IIS Express調(diào)試使用64位程序集的ASP.Net應(yīng)用,應(yīng)使用64位版本的IIS Express。設(shè)置方法如下:

(1)關(guān)閉正在運(yùn)行的IIS Express實(shí)例;

(2)單擊主菜單上的“工具”-“選項(xiàng)”命令,打開(kāi)選項(xiàng)對(duì)話框;

(3)在選項(xiàng)對(duì)話框目錄樹(shù)中“項(xiàng)目和解決方案”-“Web項(xiàng)目”標(biāo)簽,勾選“對(duì)網(wǎng)站和項(xiàng)目使用IIS Express的64位版本”條目。

\

3.Visual Studio發(fā)布Web項(xiàng)目時(shí)的設(shè)置

在Visual Studio發(fā)布ASP.Net項(xiàng)目時(shí),如果設(shè)置了在發(fā)布期間預(yù)編譯功能,Visual Studio將調(diào)用ASP.Net編譯器對(duì)項(xiàng)目進(jìn)行編譯。

\

該編譯器默認(rèn)選擇的是32位編譯器,而Visual Studio未提供任何配置管理界面。更換64位編譯器的方法為:

(1)找到當(dāng)前發(fā)布Web的配置文件名稱,本例中的文件名稱為PublishConfig;

\

(2)在解決方案資源管理器的Properies目錄下,找到對(duì)應(yīng)的配置文件,打開(kāi)進(jìn)行編輯;

\

(3)在該配置文件中添加下列語(yǔ)句:

 

1
[Microsoft .Net Framework路徑]\ Framework64\[版本號(hào)]

 

例如:

 

1
C:\Windows\Microsoft.NET\Framework64\v4.0.30319

 

注意:Visual Studio 2010以前的版本配置方法有所不同,暫時(shí)未找到對(duì)應(yīng)解決方案,可選擇不進(jìn)行預(yù)編譯。

4.64位Windows Server上的IIS設(shè)置

IIS可以針對(duì)具體的ASP.Net應(yīng)用設(shè)置是否以64位環(huán)境運(yùn)行,具體的操作方法如下:

(1)部署Web站點(diǎn)后,打開(kāi)Internet 信息服務(wù)(IIS)管理器;

(2)在目錄中選擇應(yīng)用程序池,選擇目標(biāo)站點(diǎn)的應(yīng)用配置,通過(guò)右鍵菜單打開(kāi)高級(jí)設(shè)置;

(3)將啟用32位應(yīng)用程序選項(xiàng)設(shè)置為False,應(yīng)用將以64位環(huán)境運(yùn)行。

5.編譯器是否需要在解決方案配置中設(shè)置x64平臺(tái)

關(guān)于此問(wèn)題,我查閱過(guò)一些文檔,同時(shí)也進(jìn)行了實(shí)驗(yàn)。個(gè)人觀點(diǎn)如下:

(1)普通的ASP.Net項(xiàng)目無(wú)需進(jìn)行平臺(tái)的設(shè)置,平臺(tái)設(shè)置為x86和x64均不影響項(xiàng)目的編譯和發(fā)布,因此使用默認(rèn)的Any CPU平臺(tái)即可。

(2)對(duì)于使用了有環(huán)境限制程序集的項(xiàng)目,如系統(tǒng)驅(qū)動(dòng)、數(shù)據(jù)庫(kù)驅(qū)動(dòng),最好是配置對(duì)應(yīng)平臺(tái)。在發(fā)布時(shí)環(huán)境異常,可以獲取更多有效的信息,節(jié)省調(diào)試時(shí)間。

后記

諸多開(kāi)發(fā)者都對(duì)微軟的文檔不滿,軟件工程師與律師的職業(yè)屬性不同,每日不可能有諸多時(shí)間消耗在翻閱類似于法典的MSDN文檔中。而我們希望的是能夠針對(duì)可能出現(xiàn)問(wèn)題的頻率來(lái)組織開(kāi)發(fā)資料,這樣開(kāi)發(fā)者將少走很多彎路。

 

源: http://www./kf/201407/313919.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多