2013-12-12 82 views
2

request.islocal我跑在我的Global.asax內Application_Start塊一些代碼,我正在尋找一種方式,我可以判斷,如果應用程序在本地運行,所以我可以有條件地執行代碼。確定在Global.asax中

通常我會用這樣的事情,但在Global.asax沒有httpcontext

if (Request.IsLocal == true) { 
     //run the code... 
    } 

是否有另一種方式我可以判斷,如果應用程序在本地運行? Debug總是被設置爲true localhost上,或許這會給我一些手柄可以使用嗎?

編輯12月13日

我應該澄清BeginRequest是不是一個合適的人選這裏的代碼執行是寫了一些文件到本地目錄,這不應該在每次請求重複。

+1

在applicationstart你沒有becouse的應用程序的請求開始和當地的意義並不becouse應用程序定義總是啓動和運行的本地 – giammin

+1

,如果你可以用'Application.BeginRequest',即將工作。 – Abhitalks

回答

2

這一個是專門針對您的問題,有關從web.config中確定調試

var configSection = ConfigurationManager.GetSection("system.web/compilation"); 
if (configSection.Debug) { 
    // your code 
} 

我想你也需要適當的強制轉換。就在手邊。

是。你必須把它投到System.Web.Configuration.CompilationSection

2

好決定去這一點,@ abhitalks的解決方案也適用!

if System.Diagnostics.Debugger.IsAttached() { 
     //.... 
    } 
0

,以確定或分類都被放置要在的Application_Start,在那裏,如果它是爲不本地執行本地執行所需要的代碼條件的最簡單方法,然後將其放置在Global.asax中的的BeginRequest。

我幾天前遇到這個issue,可以在線獲得即時回覆。

+0

感謝雖然在我的情況下,條件代碼正在寫入一些文件到驅動器,所以這是不理想的每個請求重複此過程。這表示它可能適用於更輕量級代碼的其他人。 – QFDev

+2

ok.another來自你的問題的答覆,我可以猜出來正在嘗試類似Request.UserHostAddress的東西,通常在本地運行時通常會返回127.0.0.1。 @QF_Developer –

+0

請求在Application_start的上下文中不可用。拋出HttpException –