1

Web サイトの負荷テストを行っています。サイトは、clientCredentialType="Windows" を使用して、同じボックスで実行されている WCF サービスを呼び出します。特定の負荷(それほど高くない)に達するまですべてが機能し、次のエラーが発生します。

System.ServiceModel.Security.MessageSecurityException: クライアント認証方式 'Anonymous' で HTTP 要求が禁止されました。----> System.Net.WebException: リモート サーバーがエラーを返しました: (403) 許可されていません。

呼び出しごとに、チャネルを作成します。

var proxy = (IClientChannel)channelFactory.CreateChannel();

成功したら、閉じます。

proxy.Close();

エラーが発生した場合、私は中止します:

proxy.Abort();

何が起こっているのですか?負荷をより適切に処理するにはどうすればよいですか? 何を探すべきですか?

4

3 に答える 3

1

あなたのサービスはセッションフル サービスですか、それとも呼び出し間で状態を維持することを心配していませんか? 状態がない場合は、サービスを PerCall サービスとしてマークすることができます。これにより、クライアント呼び出しが進行中の場合にのみサービス インスタンスが存在することが保証されます。

Juval Lowy の優れた本「Programming WCF Services」第 2 版の第 4 章で、このトピックが取り上げられています。

デフォルトは PerSession ですが、これはあなたが望むものではないかもしれません。

また、MSDN でこれを参照してください: How To: Control Service Instancing

于 2009-01-21T23:15:44.200 に答える
0

ありがとうテリー。いいえ、私のサービスは状態を維持しません。サービスクラスを次のように装飾してみました:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]

助け無し。障害点は、約 4 つの同時呼び出しにあるようです。

于 2009-01-22T00:26:52.667 に答える
0

問題は、10 接続の制限がある IIS 5 を使用する XP である開発ボックスでテストを実行していたことです。

于 2009-01-28T02:48:27.877 に答える