Asp.net
全域 ASAX - 獲取伺服器名稱
誰能告訴我是否有辦法在 global.asax 的 Application_Start 事件中獲取我網站的域名?
通常我只是從 Context.Request.ServerVariables[“SERVER_NAME”] 中獲取它,但這不可用。理想情況下,我還想從啟動應用程序的請求中獲取 URL。
嗯 - 從下面的答案來看,似乎在 IIS7 上會有所不同。這是新的,現在有設計指南試圖阻止你這樣做:
您可以通過靜態HttpContext.Current成員訪問Context 。
HttpContext.Current.Request.ServerVariables["SERVER_NAME"]; HttpContext.Current.Request.Url;編輯,根據您的一些評論,我做了一些額外的研究
此錯誤是由於 IIS7 集成管道中的設計更改導致 Application_Start 事件中的請求上下文不可用。當使用經典模式(在以前版本的 IIS 上執行時的唯一模式)時,請求上下文過去是可用的,即使 Application_Start 事件一直旨在作為應用程序生命週期中的全域且與請求無關的事件。儘管如此,由於 ASP.NET 應用程序總是由應用程序的第一個請求啟動,因此過去可以通過靜態 HttpContext.Current 欄位訪問請求上下文。
所以你有兩個選擇
- 更改您的應用程式碼以不使用請求上下文(推薦)。
- 將應用程序移至經典模式(不推薦)。
<http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart/>