コメントで述べたように、深刻な作業では通常、IIS をアプリケーション ホストとして使用しないことをお勧めします。いくつかの欠点があります (サービス アドレスを指定する、アプリ プールを処理してそれらをリサイクルする必要があるなど)。
代わりに、私は通常、Windows NT サービス内など、自己ホスト方式で実稼働サービスを実行します。これにより、柔軟性が大幅に向上します。アドレスを含むすべての側面を完全に制御でき、サービスを自由に開始/停止できます。また、アプリケーション プールのリサイクルに翻弄されることもありません。
基本的にはServiceHost
、WCF ランタイムから のインスタンスを作成し、ホストするサービス クラスと、オプションでサービスがエンドポイントを公開している 1 つ (または複数) のベース アドレスを指定する必要があります。
ServiceHost svcHost = new ServiceHost(typeof(MyWCFService));
// optionally set additional properties here, if needed
svcHost.Open(); // now, the host is open and accepting
リクエストのリッスンを停止したい場合は、呼び出すだけsvcHost.Close()
で、サービス ホストがなくなります。
これを NT サービスにパッケージ化する場合、通常はメソッドで.Open()
サービス ホストのセットアップと実行を行い、NT サービスのメソッドでOnStart
処理します 。svcHost.Close()
OnStop
を含むこのアプリはServiceHost
、NT サービスである必要はありません。特にテストの場合、ServiceHost をコンソール アプリに配置し、起動して、WCF サービスを有効にし、テスト/デバッグ/拡張することは常に非常に簡単です。次に、コンソール アプリをもう一度閉じます。私の意見では、IIS、仮想ディレクトリなどをいじるよりもはるかに簡単です。
見る: