關於我

我的相片
用心思考、保持熱情,把工作上的經驗作分享與紀錄。希望能夠跟大家一起不斷的成長~
顯示具有 IIS 標籤的文章。 顯示所有文章
顯示具有 IIS 標籤的文章。 顯示所有文章

如何部署 Asp.Net 4.0 應用程式於 IIS 7 x64 WSS 3.0 下

在佈署Asp.Net 4.0應用程式至IIS7 x64 WSS3.0下時,一直發生執行網頁,只有一整片空白,什麼都沒有,一開始看到這情況一下還傻住了,完全不知從何下手。 唯一馬上想到的,只有對應處理常式是否設定不正確這方向。檢查後,發現確實有問題!但卻在調整後,一無所獲、完全沒動靜,依然為一片空白Orz。 最後在幾小時的努力後,總算解決問題。發生原因可謂錯綜複雜,因此趕緊將此次經驗做個紀錄。

紀錄下在 Windows Server 2008 Standard x64 IIS7.0 的系統環境,WSS 3.0 x64 預設 SharePoint – 80 網站環境下部屬 Asp.Net 4.0 應用程式所遇到問題,與解決方式。

  1. WSS 3.0 x64 只能運行於 x64 mode。並Managed管線模式,需運行於Classic(傳統)。
    擷取
    如果非運行於x64 mode ,會造成網頁執行後,呈現一整片空白。遇到這狀況時,會十分困難除錯。
    而還需注意的是,Managed管線模式,需運行於Classic(傳統)。否則也造成運行一片空白的窘境。

  2. 佈署於SharePoint - 80下之Web應用程式,其Managed管線模式須設定為Classic(傳統)。
    擷取
    以此例,部屬Asp.Net 4.0的應用程式,其應用程式集區,需選用ASP.Net v4.0 Classic (注意其Managed管線模式是否為[傳統]) 。如非選用傳統模式,則也會有該應用程式網頁呈現一片空白之情況。

  3. WSS 3.0 與 .Net Framework 的安裝順序,會影響 WSS 3.0 所使用到的 Handler。
    以此例,因WSS 3.0實際使用v2.0的.Net Framework,而需部屬其下之Web應用程式使用的則為v4.0的Framework。此時要注意該應用程式之[處理常式對應]是否包含有v4.0的對應。
    擷取2 
    擷取3
    如果不包含,表示您可能未安裝v4.0 Framework,可下載dotNetFx40_Full_x86_x64安裝。 或是安裝順序不正確,如先安裝.4.0 .net Framework 後才安裝IIS,則會發生iis無4.0對應之狀況,此時須執行aspnet_regiis.exe重新註冊v4.0 至IIS。 又或是先安裝了WWS 3.0 ,爾後才又安裝 4.0 .Net Framework,則會發生 Wss 3.0 中的對應處理常式,不包含v4.0的處理常式。只含有v2.0的部分,則此時此SharePoint下之應用程式,也將只繼承到v2.0部分,將會沒有對應v4.0的功能,此時也可能造成執行網頁後,只出現一片空白。

    處理方式為,於SharePoint管理中心中,先擴增原SharePoint – 80應用程式 ( 比方說擴增為Port 8080 對應內部網路..等 ) ,接著再移除原預設(Port 80)應用程式,移除後再重新將預設 Port 80 擴充回來,類似重新建立預設的應用程式了,這樣便可正確抓到新安裝的.net Framework 對應處理常式。

  4. 最後則是部屬使用Asp.net 4.0之應用程式需特別注意的,需增加 [ 萬用字元指令碼對應 ]。
    這個不管事再 IIS 6.0或是 IIS 7.0 都須特別注意的,而iis 6.0 與 iis 7.0的設定位置不同,分別示意如下圖:

    IIS 6.0部分:
    1

    IIS 7部分參考如下:
    擷取5 
    擷取6 
    擷取7 
    擷取8 

這次問題均在不熟悉的環境中發生(IIS7、x64、WSS),算是花了不少時間在找問題的原因。不過總算是對IIS 7有更深入的瞭解了~ 此處將遇到之錯誤做紀錄,也許還有疑點或需繼續探討處,待未來慢慢再深入研究琢磨~~

如何在64位元作業系統中,指定Web應用程式用32位元模式執行

今天專案將Web應用程式部署至64位元的作業系統時,
果不其然的發生了問題,有支程式用 Microsoft.Jet.OLEDB.4.0 Provider 把Excel資料讀進來。
但在64位元的環境執行時,這段程式出了問題。
上Google一查,原來是 Microsoft.Jet.OLEDB.4.0 Provider 沒有For 64bit的版本。
查到的方法,就唯獨讓Web應用程式使用32bit mode一途,可解決此問題了。

在此情況下,以下介紹兩種可以讓Web應用程式使用32bit mode執行的方式!

  1. 在專案的屬性視窗中,選到建置的設定視窗,將平台目標(PlatformTarget)修改為x86即可。
    擷取1
  2. 直接修改佈署Web應用程式的應用程式集區(ApplicationPool),指定以32bit mode執行。
    (在寫此文章時,查看 IIS7.0 與 IIS7.5 兩版本,均有此選項可做調整)

    擷取 
    以上兩種方式,均可指定應用程式使用32bit 模式執行。

但如使用第一種方式,須注意到,因預設使用AnyCPU的選項,會依您佈署作業系統環境,
而對應使用不同的CPU mode。

所以當所有Library都設定為AnyCPU,僅有其中一個Library被修改指定使用x86模式時,
當佈署於x86的作業系統環境,應用程式全部都會使用x86運行,便可完全正常運作。
但當佈署至x64的作業系統環境時,便會有些以x64運行,有些要以x86運行,便會發生無法載入的錯誤情況。
因此要相當注意,有參考到的Library都必須一併指定為x86 mode,
不然應用程式在Runtime時,會發生x64無法跟x86溝通的問題。

但這問題就來了,如果是我們自己開發的程式,指定運行的Mode當然沒問題。
但如果是使用一些Third party的Tool,這時就很難保證他會用什麼模式運行了。

所以總結,是比較建議使用上方介紹的第二種做法,直接指定整體環境(在Web環境是ApplicationPool)使用x86運行,
應該會是比較保險的做法。

找到IIS App對應Process ID

找到IIS App對應的Process ID

IIS6.0版本,可使用iisapp.vbs找到,如下圖:

擷取

IIS7.0以上版本,則更新為appcmd.exe,如下圖:

擷取1

以上方式則可找出對應IIS App 的Process ID

IIS Status Code

找到一篇英文的說明文件,將其用Google翻譯於下:

1xx - 信息提示

這些狀態代碼表示臨時的響應。客戶端應準備接收一個或多個 1xx響應之前收到常規響應。

100 - 繼續。
101 - 切換協議。

2xx - 成功

這個類的狀態代碼表明服務器成功地接受了客戶端請求。

200 - 確定。客戶端請求已成功。
201 - 已創建。
202 - 已接受。
203 - 非權威性信息。
204 - 無內容。
205 - 重置內容。
206 - 部分內容。
3xx - 重定向

客戶端瀏覽器必須採取更多行動,以完成該請求。例如,瀏覽器可能不得不請求不同服務器上的網頁或重複的請求使用代理服務器。

301 - 永久移動
302 - 對象暫時轉移
303 - 查看其他
304 - 未修改。
307 - 臨時重定向。
4xx - 客戶端錯誤

發生錯誤,客戶端似乎有過失。例如,客戶端可能請求的頁面不存在,或者客戶端可能無法提供有效的身份驗證信息。

400 - 錯誤的請求。
401 - 訪問被拒絕。 IIS中定義了一些不同的401錯誤,表明一個更具體的原因錯誤的。這些具體的錯誤代碼顯示在瀏覽器,但不會顯示在IIS日誌:

401.1 - 登錄失敗。
401.2 - 登錄失敗,原因是服務器配置。
401.3 - 未經授權,由於 ACL對資源的。
401.4 - 篩選器授權失敗。
401.5 - 授權失敗的ISAPI / CGI應用程序。
401.7 - 訪問被拒絕通過 URL授權策略在Web服務器上。此錯誤代碼是特定於 IIS 6.0中。

403 - 禁止。 IIS中定義了一些不同的403錯誤,表明一個更具體的錯誤原因:

403.1 - 執行訪問被禁止。
403.2 - 讀訪問被禁止。
403.3 - 寫訪問被禁止。
403.4 - 要求SSL。
403.5 - 要求SSL 128。
403.6 - IP地址被拒絕。
403.7 - 要求客戶端證書。
403.8 - 站點訪問被拒絕。
403.9 - 用戶數過多。
403.10 - 配置無效。
403.11 - 密碼更改。
403.12 - 拒絕訪問映射表。
403.13 - 客戶端證書被吊銷。
403.14 - 拒絕目錄列表。
403.15 - 超出客戶端訪問許可證。
403.16 - 客戶端證書不受信任或無效。
403.17 - 客戶端證書已過期或尚未生效。
403.18 - 不能執行所請求的URL在當前的應用程序池。此錯誤代碼是特定於 IIS 6.0中。
403.19 - 無法執行的客戶端的CGI在此應用程序池。此錯誤代碼是特定於 IIS 6.0中。
403.20 - Passport登錄失敗。此錯誤代碼是特定於 IIS 6.0中。

404 - 未找到。 404.0 - (無) - 文件或目錄未找到。

404.1 - 網站無法訪問請求的端口上。
404.2 - Web服務擴展鎖定策略阻止本請求。
404.3 - MIME映射策略阻止本請求。
404.4 - 沒有處理程序(IIS 7中)
404.5 - 請求篩選:網址序列被拒絕(IIS 7中)
404.6 - 請求篩選:動詞否認(IIS 7中)
404.7 - 請求篩選:文件擴展名被拒絕(IIS 7中)
404.8 - 請求篩選:拒隱藏命名空間(IIS 7中)
404.9 - 被拒絕,因為隱藏文件屬性已設置(IIS 7中)
404.10 - 請求篩選:拒絕,因為請求標題太長(IIS 7中)
404.11 -請求篩選:拒絕,因為網址一倍逃脫(IIS 7中)
404.12 - 請求篩選:拒絕,因為高位字符(IIS 7中)
404.13 - 請求篩選:拒絕,因為內容長度太大(IIS 7中)
404.14 - 請求篩選:拒絕,因為網址太長(IIS 7中)
404.15 -請求篩選:拒絕,因為查詢字符串太長(IIS 7中)

405 - HTTP動詞用於訪問此網頁不允許(不允許的方法。)
406 - 客戶端瀏覽器不接受的MIME類型的請求的頁面。
407 - 需要代理身份驗證。
412 - 前提條件失敗。
413 - 請求實體太大。
414 - 請求 URI太長。
415 - 不支持的媒體類型。
416 - 請求範圍不符合。
417 - 執行失敗。
423 - 鎖定的錯誤。

5XX系列 - 服務器錯誤

服務器無法完成請求,因為它遇到一個錯誤。

500 - 內部服務器錯誤。
500.12 - 應用程序正忙於重新啟動 Web服務器上。
500.13 - Web服務器太忙。
500.15 - 直接請求 Global.asa中都是不允許的。
500.16 - UNC授權憑據不正確。此錯誤代碼是特定於 IIS 6.0中。
500.18 - URL授權存儲不能打開。此錯誤代碼是特定於 IIS 6.0中。
500.100 - 內部 ASP錯誤。

501 - 標題值指定的配置不是實施。
502 - Web服務器收到一無效的響應,同時作為網關或代理。

502.1 - CGI應用程序超時。
502.2 - CGI應用程序中的錯誤。

503 - 服務不可用。此錯誤代碼是特定於 IIS 6.0中。
504 - 網關超時。
505 - HTTP版本不受支持。

Asp.Net 2.0 IIS Register

找到一篇不錯的參考文 http://blog.xuite.net/jungte.lin/blog/25133697

ASP.NET can be re-registered with IIS. The specific method depends on the operating system being used. For more information on ASP.Net and the IIS Registration tool, see the related links below.

Windows 2000/XP

To fix this on Windows 2000 or Windows XP, run this command from the Start>Run box or a command prompt (assuming the system directory is C:\Windows):

.Net 1.1: C:\Windows\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i

.Net 2.0: C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

Windows 2003

On Windows 2003, ASP.NET must be both installed and enabled.  To install ASP.NET:

  1. On the taskbar, click the Start button, point to Control Panel, and then click Add or Remove Programs.
  2. In the Add or Remove Programs dialog box, click Add/Remove Windows Components.
  3. In the Components box in the Windows Components Wizard, click the Web Application Server check box, and then click Next.
  4. When the Windows Components Wizard has finished configuring Windows Server 2003, click Finish.

To enable ASP.NET, run this command from the Start>Run box or a command prompt (assuming the system directory is C:\Windows):

.Net 1.1: C:\Windows\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i -enable

.Net 2.0: C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i –enable

依據上文的參考操作:

1.先看看未安裝前的項目:

Server2003伺服器:未註冊ASP.NET v2.0.50727情況

VATWEB2008伺服器:已註冊ASP.NET v2.0.50727情況

擷取

2.接著於Server2003伺服器上依照上文操作,

輸入命令:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i –enable

擷取2

完成後就可以看到網頁服務延伸中,已經有ASP.NET v2.0.50727囉~~

用[執行]輸入指令開啟 IIS Manager

於執行輸入:inetmgr

擷取

即可開啟 IIS Manager

 

用CMD視窗指令,重啟IIS,開啟CMD視窗後,輸入 iisreset 即可

擷取