部署網站每每是一件麻煩事,由於在安裝部署的過程當中,常常有許多步驟要運行,對於許多不太熟悉IIS/SQL的新手來講,部署網站編程一件很是困難且危險的事。Visual Studio 2012在ASP.NET網站部署方面提高了很多能力,有助於讓你將現有網站快速且簡便地發佈到遠程的IIS服務器上,而免除了許多繁雜的設置程序。在這裏所說的危險,是指信息安全方面的風險,由於經常設置不成功就會開始亂設權限,例如,將目錄設置成Everyone可擦寫等,這些都是很是危險的部署設置。web
1.如何部署到本機的IIS數據庫
要部署到IIS,首要動做必須是先安裝IIS功能,若要運行ASP.NET MVC 4,則還必須安裝.NET Framework 4.0以上版本。通常來講,安裝ASP.NET MVC網站到IIS有很是多方法,但咱們將專一於介紹Visual Studio 2012內建的Web一鍵式發佈功能,經過這個好用的功能將能有效下降ASP.NET網站安裝部署的複雜度。編程
若是你用的是Windows 7或Windows 8操做系統,能夠經過「控制面板」->「程序」->「打開或關閉Windows功能」進行安裝,選中「Internet信息服務」選項,以及「應用程序開發功能」選項中的ASP.NET。瀏覽器
從Windows7的「開啓或關閉Windows功能」安裝ASP.NET只會安裝.NET3.5 SP1,若要運行ASP.NET MVC4.0網站,則必須安裝.NET Framework4.0以上版本。安全
VS2012提供了「Web一鍵式發佈」工具欄,只要建立「發佈設置」以後,便可用「單鍵」將網站安裝或更新完成,很是神奇且好用。服務器
在VS2012的工具欄上單擊鼠標右鍵,在彈出的快捷菜單中選擇「Web一鍵式發佈」命令便可開啓「Web一鍵式發佈」工具欄,以下圖。框架
開啓「Web一鍵式發佈」工具欄後,就新增一個新的發佈設置,以下圖。less
VS2012的「Web一鍵式發佈」功能支持多種發佈方法,其中包括Web Deploy、Web Deploy包、FTP、文件系統與常規的FPSE(FrontPage Server Extension)等,以下圖所示。工具
a.使用Web Deploy部署 測試
要安裝網站到本機IIS,使用Web Deploy是最有效率的方法,不過在開始以前,咱們須要先開啓IIS具體設置,並介紹一些IIS界面中的專用術語,這有助於幫助咱們瞭解將來如何設置發佈時所需的參數。
上圖中,標號(1)的節點,叫作「服務器名稱」,標號2的節點叫作「站點名稱」,標號3的節點叫作「應用程序名稱」。
接着,咱們切換至VS2012「建立發佈設置」的界面,在「鏈接」這個步驟,當選定Web Deploy發佈方法時,會顯示多個設置字段,以下表所示。
域名 | 輸入介紹 |
服務器 | 這裏要輸入的是服務器名稱或IP地址,若要安裝到本地計算機,直接輸入localhost便可 |
站點名稱 | 這裏主要是讓你輸入「站點名稱」與「應用程序名稱」,兩個參數必須以一個除號(/)做分隔。若是想直接安裝到該網站站點的根目錄,能夠僅輸入「站點名稱」便可,不用輸入除號(/)與應用程序名稱 |
用戶名 | 當「服務器」輸入的是本機地址(如localhost),此字段不須要輸入 |
密碼 | 當「服務器」輸入的是本機地址(如localhost),此字段不須要輸入 |
目標URL | 此字段是這個網站發佈到IIS後的網址,每次發佈成功,VS2012都會自動開啓瀏覽器,並進入這個網址。此字段能夠選擇不輸入 |
設置完成後的界面以下圖所示。
不過,若是你的VS2012運行在UAC(用戶帳戶控制)的狀態下,在驗證鏈接時就會發生Need Elevated to Run Msdeploy的警告消息,以下圖所示。
接着單擊「下一步」按鈕繼續設置其餘參數,以下圖。
你能夠點擊這個警告消息的連接,它會提示你應該在「系統管理員模式」下啓動VS才能運行部署操做。這是必須從新啓動關掉VS2012,從新「以管理員身份運行」的方式啓動,這樣的權限才能發佈網站到本機的IIS上。
接着單擊「下一步」按鈕繼續設置其餘參數,以下圖所示。
一般有規律的管理團隊,都會設置多個不一樣的方案配置,以便切換「開發環境」與「正式環境」的設置,所以在「Web一鍵式發佈」問世以前,負責發佈網站的人,平時大多會將方案配置切換到Debug設置,以方便開發與測試,當要發佈網站到「正式環境」時,必需要先手動切換方案配置到Release配置,而後對網站進行編譯,最後再將編譯好的文檔部署到IIS站點,但這個切換動做容易讓人忽略,所以這樣的發佈流程多少迴帶給咱們一些困擾。
使用VS2012的「Web一鍵式發佈」功能有一個好處,那就是VS會幫助你作完全部「發佈」工做所需的前置做業,在「設置」界面中,能夠指定「配置」選項。若是指定Release配置,即使當前選擇的是Debug配置,VS也會幫你自動切換到Release配置並編譯整個網站,最後再將這個編譯好的網站發佈到遠程的IIS中,網站部署的流程被自動化,相應的發生錯誤的機會就下降了。
在「配置」設置中,還有個「刪除目標上的附加文件」選項,在發佈網站以前,會先移除IIS站點目錄中的全部文檔,而後才發佈更新文檔。
由於開發環境的數據庫鏈接參數與正式環境的數據庫鏈接參數每每不太同樣,所以能夠在「配置」中的設置數據庫。能夠勾選「在運行時使用此鏈接字符串(更新目標web.config)」選項,用這裏指定的鏈接字符串,修改Web.config配置文件內的數據庫鏈接字符串。
接着單擊「下一步」按鈕進入「預覽」設置界面,以下圖。
「預覽」功能能夠將此次要發佈到IIS站點的全部文檔列出來,而且明確告知你此次發佈的動做會有多少文檔被新增、刪除或更新,以下圖。
最後單擊「發佈」按鈕,這些準備發佈的文檔就會成功地部署到IIS裏。
上述發佈設置雖然感受有些複雜(跟之前相比已經簡單不少),但你只需設置一次,當往後在項目中有任何文檔被新增、刪除或更新時,只要在「Web一鍵式發佈」工具欄上單擊「發佈Web」按鈕,以下圖,網站全部的異動就會自動發佈到IIS上,很是方便且直觀。
最後就能夠用http://localhost/ShoppingMall網址,瀏覽該網站了。
2.可能出現的錯誤
(1)發生NEED ELEVATED TO RUN MSDEPLOY的警告消息
若是VS運行在UAC(用戶帳戶控制)狀態下,在驗證鏈接時,就會發生NEED ELEVATED TO RUN MSDEPLOY的警告消息。這時可關掉VS,「以管理員身份運行」的方式從新啓動VS,這樣的權限才能發佈網站到本機的IIS上。
(2)遇到「預覽失敗」錯誤
若是遇到「預覽失敗」錯誤,多是因爲IIS的應用程序池中,默認網站的.NET Framework版本不對,將2.0修改成4.0,以下圖。
(3)發生錯誤處理程序「ExtensionlessUrlHandler-Integrated-4.0」
若是發生錯誤處理程序「ExtensionlessUrlHandler-Integrated-4.0」,多是須要用aspnet_regiis註冊4.0框架,而後用4.0的Class池,就能夠運行4.0的web項目了。以管理員方式啓動「VS2012開發人員命令提示」,具體操做以下圖。
(4)出現「用戶 'IIS APPPOOL\DefaultAppPool' 登陸失敗」錯誤
若是出現「用戶 'IIS APPPOOL\DefaultAppPool' 登陸失敗」錯誤,可將IIS中Default Web Site應用程序池的高級設置-->進程模型-->標識,修改成NetworkService。
(5) 頁面出現「HTTP 錯誤 403.14 - Forbidden Web 服務器被配置爲不列出此目錄的內容」