現在のアプリケーションが勝利またはWebフォーム(またはその他の)アプリケーションであるかどうかを検出する、信頼性の高いエレガントな方法はありますか?勝利またはWebフォームを検出する
私たちには、app.configまたはweb.configのいずれかを開く必要のある共通の設定クラスがあります。
現在、私はOpenExeConfigurationを試してみるとArgumentExceptionをキャッチしていますが、それほどエレガントではなく、他の問題を隠すかもしれません。
現在のアプリケーションが勝利またはWebフォーム(またはその他の)アプリケーションであるかどうかを検出する、信頼性の高いエレガントな方法はありますか?勝利またはWebフォームを検出する
私たちには、app.configまたはweb.configのいずれかを開く必要のある共通の設定クラスがあります。
現在、私はOpenExeConfigurationを試してみるとArgumentExceptionをキャッチしていますが、それほどエレガントではなく、他の問題を隠すかもしれません。
私は通常これを行うために利用できるのHttpContext(WebサービスHttpContenxt.Current
にヌルであるため、それは、Webアプリケーションの場合) がありますチェックすると、あなたはあなたの参照にSystem.Web
を追加する必要があります。
if(HttpContext.Current!=null)
//It's a web application
else
//it's a win application
configクラスがswitch文を実行する必要がないように、依存性注入を使用してみてください。
あなたはおそらくあなたがProcess.MainWindowHandle
がIntPtr.Zero
ない、またはプロセス名を確認、または潜在的にプロセスのロードモジュールをスキャンチェックすることができ、Process.GetCurrentProcess()
経由で実行中のプロセスを取得してみてください。これは、現在の実行コンテキストでは必要ないアセンブリをロードする必要がないという利点があります(たとえば、そのアプリケーションがWebアプリケーションの場合はSystem.Windows.Forms.dllをロードしないでください)。
しかし、これは優しくないようです。
サービスにはMainWindowHandleもないので、これがサービスであればこれは失敗します。 私は実行中のプロセスを尋ねるのを避けたいと思っていました。 –
ありがとう、それは私が探していたものです –