以下為EEP2012的Web系統開發完畢後所要做的發佈動作,目的是讓開發完成的系統發佈到IIS Server 7上去,說明如下:
q 發佈步驟
通常發佈的系統在IIS 伺服器電腦上是沒有安裝Visual Studio 2012開發環境,所以必須在IIS Server那台伺服器做好做以下準備:
Step1>設定與改變EEPWebClient.exe.config內容。之前的EEPWebClient.exe.config都是設定到自己這台機器(127.0.0.1或localhost),代表IIS Server與A/P Server是同一台機器。
如果你的IIS Server與A/P Server還是同一台機器,就可以延用127.0.0.1的設定;如果不一樣,就必須設定A/P Server的內部IP Address,如A/P Server為192.168.0.160,請將以下兩個IP Address改掉,Port No則保留原來的設定,除非你要更換Port No。
圖 4-5-1 設定A/P Server的內部IP Address
Step2>將最新的InfoRemoteModule.dll,Srvtools.dll,以及InitEEP.exe複製到“..\EEPWebClient\Init”路徑下。
這是因為要分發給IIS Server後,必須在IIS Server上執行 InitEEP.EXE,並將InfoRemoteModule.dll與Srvtools.dll註冊在IIS Server的Global Assembly中。(其他的envdte80.dll、envdte.dll、Gacutil.exe都是系統預設好,而且不會改變的檔案)。
圖 4-5-2 複製到指定路徑
設定發佈的參數與模組,來設定那些要跟著發佈,那些不必,因為有些Assembly模組在RunTime的時期中是沒有必要存在的,所以我們如下來進行刪除與整理。
Step3>我們事先打開Web.config,將圖中紅色的標誌項目全部刪除。但如果要使用CrystalReport,則圖中綠色標誌部分請保留。(即:除了EEP2012的2個dll,以及System開頭的部分,其他都可以刪除。)
小貼示:
如果要刪除CrystalReport相關項目(沒用到CrystalReprot),請同時將Template路徑下的WReport1、2、3同時刪除,或者暫時移動到其他不會被發佈的路徑下。
圖 4-5-3設定發佈的參數與模組
再來,就是到你所要發佈的IIS Server上打開IIS的設定,如果你想發佈在開發環境這台機器上也是可以,但必須安裝好IIS的服務即可。
Step4>接著打開IIS的控制台,可以在開始->設定->控制台中,選擇系統管理工具->「Internet Information Server」,進入後在「預設網站」上按一下右鍵,選擇執行「新增」->「虛擬目錄」,如下圖:
圖 4-5-4 新增虛擬目錄
Step5>如上,在對話窗中按「下一步(N)」,設定所要發佈的Web路徑名字,如可以設為【EEP2012WEB】
Step6>用Browser去瀏覽並選擇實體路徑。例如:【D:\Publish】。
圖 4-5-6 設定虛擬目錄
Step7>更改應用程式連接池的.Net Framework版本為4.0。
圖 4-5-7 確認.Net Framework的版本號
Step8>再來,回到我們開發的這台工作站中,並在VS中點一下EEPWebNetClient這個WebSite右鍵,執行「Publish WebSite」來正式發佈系統。
圖 4-5-8 執行Publish WebSite
Step9>在下面的對話窗,我們選擇剛剛在IIS中所建立的虛擬路徑。
如果你要發佈在開發環境中的這台就設定為Localhost即可,如果是另一台IIS,請設定發佈到IIS機器上的IP Address,如果是透過Internet遠端就必須使用FTP(檔案傳輸協定)方式,請在IIS上設定FTP的目錄與此虛擬路徑對應即可,我們是以localhost為例,操作如下:
圖 4-5-9 設定FTP的目錄與此虛擬路徑
Step10>最後按一下【OK】即可,大約等待1到2分鐘後,就可完成發佈。
圖 4-5-10 完成發佈
再來就是,如果你發佈的系統是在不同的機器上(絕大多數都是如此),所以沒有VS2012的開發環境,則在發佈完成後,我們必須執行一次EEPInit.EXE才能讓InfoRemoteModule.dll與Srvtools.dll這兩個系統dll註冊。
Step11>我們用檔案總管找到IIS Server上的發佈路徑,在此虛擬目錄下有一個Init的子目錄,請執行此InitEEP,先按一下【Apply】並按一下【Install Web Gac】,此目的會將上述的必要dll加入到assembly中。執行時只要設定WebClient Directory指定到所發佈的虛擬目錄即可。
圖
4-5-11
dll註冊
Step12>在IIS 中將這個虛擬目錄轉化為應用程式
Step13>打開IE,在位址框裏輸入http://localhost/EEP2012WEB/InfoLogin.aspx。或指定的IIS Server網址,即可打開EEP2012所開發的網頁,Web發佈就已經大功告成。如下圖:
圖 4-5-13 發佈網頁
q 例外處理
在發佈過程中,由於不同的OS與不同的環境會有不少差異,再次說明例外的處理方式,供排除問題。
Œ 如果瀏覽網頁出現“Failed to access IIS metabase…….”的錯誤訊息,原因可能是IIS Server沒有註冊Asp.Net這個版本,這是因為你可能先安裝好IIS,再安裝.NET 2.0就會發生這個現象。
圖 4-5-14 出現Failed to access IIS metabase
F 解決辦法如下:
請直接到命令提示下,用CD切換到Windows的目錄,如在“C:\Windows\Microsoft.NET\Framework\v4.0.30319>”之下找到一個Aspnet_regiis.exe這個程式,在命令列中輸入並執行“aspnet_regiis.exe –i”,出現如圖訊息,重新再瀏覽網頁,就可以了。
圖 4-5-15 執行aspnet_regiis.exe –i
如果發現IIS中的預設網站無法開啟,手動重新開啟時出現0X8ffe2740錯誤。
F 解決辦法:
可能的原因是80埠被其他程式佔用,可先選擇80以上的埠,開啟後再恢復;如果同時運行Skype,也可能是Skype的原因,可先關閉Skype,然後再開啟。
Ž 如果在進入InfoLogin.aspx前發生了類似這樣的“Error:Can’t access file C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ Temporary ASP.NET Files\XXXXX”時,就代表你無法存取.NET所緩存的暫存檔案,必須在這個目錄上做安全設定,說明如下:
F 解決辦法:
這是因為ASP .NET會在IIS Server建一個Cache的目錄,因此這個Cache的目錄要開放權限,請用“我的電腦”並將目錄指向“C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319”這個目錄下,對“Temporary ASP.NET Files”這個目錄設定使用者的權限,如圖,將Users設定可以寫入與修改的權限。
圖 4-5-16 設定使用者的權限
小貼示:
如果在上述的步驟中看不到「安全性」的頁籤,請在上述的檔案總管的功能表中,執行工具->資料夾選項->檢視頁籤,將「使用簡易檔案共用(建議使用)」的勾選拿掉,不選擇此選項,如圖,按下【確定】後,即可顯示出此「安全性」的頁籤,來對此目錄設定進階的安全權限設定。
圖 4-5-17 顯示安全性頁籤
Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |