在佈署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 應用程式所遇到問題,與解決方式。
- WSS 3.0 x64 只能運行於 x64 mode。並Managed管線模式,需運行於Classic(傳統)。
如果非運行於x64 mode ,會造成網頁執行後,呈現一整片空白。遇到這狀況時,會十分困難除錯。
而還需注意的是,Managed管線模式,需運行於Classic(傳統)。否則也造成運行一片空白的窘境。
- 佈署於SharePoint - 80下之Web應用程式,其Managed管線模式須設定為Classic(傳統)。
以此例,部屬Asp.Net 4.0的應用程式,其應用程式集區,需選用ASP.Net v4.0 Classic (注意其Managed管線模式是否為[傳統]) 。如非選用傳統模式,則也會有該應用程式網頁呈現一片空白之情況。
- WSS 3.0 與 .Net Framework 的安裝順序,會影響 WSS 3.0 所使用到的 Handler。
以此例,因WSS 3.0實際使用v2.0的.Net Framework,而需部屬其下之Web應用程式使用的則為v4.0的Framework。此時要注意該應用程式之[處理常式對應]是否包含有v4.0的對應。
如果不包含,表示您可能未安裝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 對應處理常式。
- 最後則是部屬使用Asp.net 4.0之應用程式需特別注意的,需增加 [ 萬用字元指令碼對應 ]。
這個不管事再 IIS 6.0或是 IIS 7.0 都須特別注意的,而iis 6.0 與 iis 7.0的設定位置不同,分別示意如下圖:
IIS 6.0部分:
IIS 7部分參考如下:
這次問題均在不熟悉的環境中發生(IIS7、x64、WSS),算是花了不少時間在找問題的原因。不過總算是對IIS 7有更深入的瞭解了~ 此處將遇到之錯誤做紀錄,也許還有疑點或需繼續探討處,待未來慢慢再深入研究琢磨~~