2009-05-26 32 views
0

任何可靠的優雅的方式來檢測當前的應用程序是一個勝利或Web窗體(或其他)的應用程序?檢測贏或網絡表格

我們有一個需要打開app.config或web.config的公共配置類。

目前,我在嘗試OpenExeConfiguration時遇到了ArgumentException,但它不是非常優雅,並且可能會掩蓋其他問題。

回答

3

我平時檢查是否有可用的HttpContext的(如果它是由於在Web服務HttpContenxt.Current Web應用程序爲null) 要做到這一點,你應該添加System.Web您參考。

if(HttpContext.Current!=null) 
//It's a web application 
else 
//it's a win application 
+0

謝謝,這就是我正在尋找 – 2009-05-26 22:39:49

1

嘗試使用依賴注入,因此config類不必執行switch語句。

0

你可以嘗試通過Process.GetCurrentProcess()得到執行過程中,可能你可以檢查Process.MainWindowHandleIntPtr.Zero,或檢查進程名,或潛在掃描的過程中加載的模塊。這會有一個好處(我假設)不需要加載當前執行上下文不需要的程序集(例如,當該應用程序是Web應用程序時不加載System.Windows.Forms.dll)。

但是,這似乎不雅。

+0

謝謝菲爾,這將失敗,如果它是一項服務,但因爲該服務沒有MainWindowHandle。 我想避免詢問正在運行的進程,因爲它似乎相當黑客。 – 2009-05-26 22:39:46