2017-01-10 10 views
2

Web環境とWindowsサービスの両方で呼び出されるアセンブリがあります。 1つの方法では、要求を調査する必要があります。しかし、それがWindowsサービスで動作するときは、そのコードをスキップする必要があります。私は通常の方法を使用しました実際のhttpコンテキストまたは偽のリクエストを区別するにはどうすればよいですか?

しかし、どういうことが起こるのか、コンテキストはnullではありません。したがって、HttpContext.Currentは、Server,Requestなどを含みます。クイックウォッチでは、これは異なる種類のコンテキストであることがわかります。私はこれを行うことで問題を解決することができます

if (HttpContext.Current == null || 
    HttpContext.Current.Request.Url.Host.IndexOf("www.izenda.com",StringComparison.CurrentCultureIgnoreCase) > -1) 
    return; 

しかし、次のバージョンのIzendaがURLに何か他のものを持っていたらどうなりますか?会社の名前が変更され、URLが異なる場合はどうなりますか?

この偽のオブジェクトから実際のWebサーバーの要求またはコンテキストを分離できる別のプロパティがありますか?

+0

現在チェックできませんでした!= null && "yourdomain" –

+0

@eranotzap "私たちのドメイン"はどのドメインでもかまいません。誰が製品をインストールするかは、ドメインの所有者です。私は本当にドメインの車ではありません。私はこれがウェブではないコードをスキップします。 –

+3

設定ファイルにフラグを追加してみませんか? – mason

答えて

1

WindowsService設定ファイルのappsettingsにキーを入力するだけです。

<add key="isService" value="true"/> 

b/wウェブやサービスを区別するためのチェックを入れてください。

+0

私は別のアプリ設定よりも優れたものを見つけたいと思った。 –

+0

appsettingの良い点は、あるプロジェクトでこれらが追加されていないと、アプリケーション内で例外もなくなり、コードがウェブとして機能するということです。そしてそれがそうするなら、それはその特定の条件のために行くか、その逆です。 –

関連する問題