3

サーバー側で動的エンドポイントを作成し、そのエンドポイントをクライアント側で使用しました。

サーバー側コード:

 for (int i = 1; i <= 3; i++)
            {
                host.AddServiceEndpoint(typeof(PokerService.IPlayerService),
                                               new NetTcpBinding(),
                                               @"net.tcp://localhost:5054/player" + i);

            }

クライアント側:

NetTcpBinding binding = new NetTcpBinding(SecurityMode.Message);
binding.Name = "NetTcpBinding_IPlayerService";
binding.Security.Message.ClientCredentialType = MessageCredentialType.IssuedToken;


EndpointAddress myEndpointAdd = new EndpointAddress(new Uri("net.tcp://localhost:5054/player1"),
EndpointIdentity.CreateDnsIdentity("pident.cloudapp.net"));

var PlayerChannelFactory = new DuplexChannelFactory<ClientApplication.PlayerService.IPlayerService>(new PlayerHandler(handler, this), binding, myEndpointAdd);

しかし、次の行でエラーが発生します:

Player loggedIn = PlayerServiceProxy.Login("testuser" + Guid.NewGuid().ToString());

エラーは次のとおりです。

「ソケット接続が中止されました。これは、メッセージの処理中にエラーが発生したか、リモート ホストが受信タイムアウトを超過したか、基になるネットワーク リソースの問題が原因である可能性があります。ローカル ソケットのタイムアウトは '00:00:59.9870000' でした。」

誰か考えがありますか?

4

1 に答える 1

0

タイムアウトのようです。クライアントとサービスのタイムアウト構成を確認してください。

また、svcTraceViewer.exe を使用して wcf トレースを確認してみてください。

于 2013-04-19T13:06:31.090 に答える