總算有機會把原本在 IIS 6 上面跑的 Web 專案移轉到 Windows Server 2008 + IIS 7 環境,但部署完成後,瀏覽網站時卻發生錯誤:
Request is not available in this context.
錯誤來源指向 Global.asax 裡面的這行程式碼:
解決方式有二:
Sol 1: 修改程式碼,改用 HttpRuntime.AppDomainAppVirtualPath 來取得應用程式的虛擬路徑。(此解法比較好)
Sol 2: 修改 Web 應用程式所屬的應用程式集區(application pool),將「Managed 管線模式」從「整合式」改為「傳統」(classic mode),如下圖所示。(這是暫時頂著用的解法)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTPxUXrXV4fCJJFA_hCzlLLvjjAfCPGRCOSuVdQk3QfrCNx2ydru8fDFor0jmbha2uXLRZRz0eH1xrvsT5OaPaXtkIvgUh2U04Rw_ryoQvX3XBVvoSGcKMQfhQaMlc9iMkKS2nRXDaBIQ0/s400/iis7_pipeline_mode.gif)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGdtrNv1j59XPA9yudFGW4vfkGX6r9G0tIvdjg1mZ_oLNzLCGabncumZbCODskEjUzVaG8vhhrEZK6NaAFJ9PIhVtHw0gL4OGnYCCunt3IYVUB7S-oTiYdRNZZ6zq59rVS3KgV3_PI1Nz/s400/mswebpi.gif)
延伸閱讀
Request is not available in this context.
錯誤來源指向 Global.asax 裡面的這行程式碼:
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) Application("vr") = HttpContext.Current.Request.ApplicationPath() End Sub原來,在 IIS 7 預設的整合管線(integrated pipeline)模式下,Application_Start 事件裡面已經不能存取 Request 物件。
解決方式有二:
Sol 1: 修改程式碼,改用 HttpRuntime.AppDomainAppVirtualPath 來取得應用程式的虛擬路徑。(此解法比較好)
Sol 2: 修改 Web 應用程式所屬的應用程式集區(application pool),將「Managed 管線模式」從「整合式」改為「傳統」(classic mode),如下圖所示。(這是暫時頂著用的解法)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTPxUXrXV4fCJJFA_hCzlLLvjjAfCPGRCOSuVdQk3QfrCNx2ydru8fDFor0jmbha2uXLRZRz0eH1xrvsT5OaPaXtkIvgUh2U04Rw_ryoQvX3XBVvoSGcKMQfhQaMlc9iMkKS2nRXDaBIQ0/s400/iis7_pipeline_mode.gif)
此外,IIS 7 在安裝時提供了更大的彈性,讓系統管理員可以選擇實際需要的模組,沒用到的可以不用裝(基於安全性的考量)。從「系統管理工具 > 伺服器管理員」展開「角色 > 網頁伺服器 (IIS)」就可以看到這些模組(角色服務),參考下圖:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcW7Y4gZm00NoDGjUSgFquLW6XdQb8PBpRkc0kfYbJumQu419Ylzxc3gjLnzygSvOk-FqF3pojn_HGViL8uXv18BYLqF2zqJ6mtEnbZCFT3BLflJAcCX1x0ow8_dT3Dcz3PsKibtE13TOf/s400/iis7_modules.gif)
在部署網站時,不妨試試官方提供的 Microsoft Web Platform Installer 工具。它會自動偵測機器上的作業環境,提供可安裝、以及預設建議的安裝項目,當然,你也可以自行選擇要裝哪些東西。參考下圖:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcW7Y4gZm00NoDGjUSgFquLW6XdQb8PBpRkc0kfYbJumQu419Ylzxc3gjLnzygSvOk-FqF3pojn_HGViL8uXv18BYLqF2zqJ6mtEnbZCFT3BLflJAcCX1x0ow8_dT3Dcz3PsKibtE13TOf/s400/iis7_modules.gif)
在部署網站時,不妨試試官方提供的 Microsoft Web Platform Installer 工具。它會自動偵測機器上的作業環境,提供可安裝、以及預設建議的安裝項目,當然,你也可以自行選擇要裝哪些東西。參考下圖:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGdtrNv1j59XPA9yudFGW4vfkGX6r9G0tIvdjg1mZ_oLNzLCGabncumZbCODskEjUzVaG8vhhrEZK6NaAFJ9PIhVtHw0gL4OGnYCCunt3IYVUB7S-oTiYdRNZZ6zq59rVS3KgV3_PI1Nz/s400/mswebpi.gif)
延伸閱讀
沒有留言: