0

現在、このセットアップがあります:

1) 機能をユーザーに提示する Web サイト。そのモジュールの 1 つが参照として別の Web サービス (WCF) に接続します。

2) パブリック Web サイトに別の機能を提供する、ネットワーク内でのみ表示される内部 Web サービス。一部のデータと rdlc レポートをバイト配列としてレンダリングして返します。

Network System で Web サービスのアプリケーション プールを実行しようとしたところ、Web サイトはアクセスできませんでした。しかし、Web サービスを Local System に設定すると機能します。

残っている唯一の問題は、より多くのユーザーが Web サイトからこの Web サービスにアクセスしようとすると、何らかの理由で Web サービスが停止し、再度実行するにはプールの更新が必要になることです。Web サービスの IIS の設定を確認しましたが、接続が無制限に設定されています。

ヘルプ!

4

1 に答える 1

0

コメントで述べたように、深刻な作業では通常、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、仮想ディレクトリなどをいじるよりもはるかに簡単です。

見る:

于 2011-02-24T06:03:54.800 に答える