2011-06-29 8 views
2

IIS7でホストされている複数のWebサイトに1つのWCFサービスが配備されており、VS2010では時には(開発環境)WCFサービスがどこに配備されているかについての情報へのアクセス方法

複数のインスタンスが同じデータベースに接続されていることが多く、通常は読み取り専用アクセスとして問題はありませんが、(ログのように)DBにアクセスするサービスのインスタンスを一意に識別する必要があります。

現在、私は後で主キーの一部として使用するweb.configに特別な属性を入れていますが、私はその理想的ではない解決策を感じています。

VS2010からホストされている場合は、IISとマシン名+ポートでホストされている場合のサイト名について考えました。

ここでは、WCFサービスがどこにデプロイされているかについての情報にアクセスする方法と、C#でデプロイされたサービスの内部からプログラムでそれを実行する方法について説明します。それはすべて可能ですか?

ありがとうございます。 Michal

答えて

0

先日、ログ記録のためにWCFサーバーのIPアドレスを取得する方法に関する質問がありました。このトピックでは、役立つかもしれない:How to get IP address of WCF web service


また、あなたは見つけることによって、IISで実行している場合、アプリがSystem.Diagnostics.Process.GetCurrentProcess()を使用してから実行されているものを処理するかを決定し、それが「w3svc.exe」かどうかを見ることができ、ありますIISアプリケーションプールが実行される内容

+0

多くのサービスが同じIPを使用しているか、複数のIPアドレスを持つ1つのVMが存在する可能性があるため、IPでは不十分ですが、VSとIISを区別するのに役立つプロセスについて考えていただきありがとうございます。 –

0

あなたの質問が正しく理解されていて、そうでない場合は、サーバー上に実際のインスタンスが配置されていることを知りたいと思います。

これはあなたのようなものを使用することができそうである場合:

(string)AppDomain.CurrentDomain.GetData("APPBASE") 

または私はこれも仕事と考えている:ので、アセンブリまたはプロセス自体の反射を利用し

AppDomain.CurrentDomain.BaseDirectory; 

が動作しませんが実行プロセスはホスト(IIS、IISExpressなど)ですが、私が指定した2つの方法では、ホストされているアプリケーションのサービス自体の場所を指定する必要があります。

関連する問題