1.私のサービスはコンソール アプリケーション上にあり、私のクライアントは Windows アプリケーション上にあります。
2.サービスにはコントラクトがあり、クライアントにはコールバック コントラクトがあります。
この問題は、クライアントがサービスのメソッドをアクティブ化し、そのメソッドがクライアントのコールバックをアクティブ化したが、そのメソッドが実行されない場合に発生します! 大きなショックは、クライアントがコンソール アプリケーションを使用しているときに、同じ状況でコールバック IS が実行されることです。
サービス契約インプレッション:
[ServiceBehavior(
InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple,
IncludeExceptionDetailInFaults = true
)]
public class ServerContractImplementation : IServerContract
{
private void NotifyOnDownloadAsync(int TorrentID, int ClientID)
{
...
IClientCallBackContract ICCC = this.ConnectedClients.Single(ConnectedClient1 => ConnectedClient1.Key.ClientID == ClientID).Value;
ICCC.AddSeeders(TorrentID, Seeders);
...
}
}
クライアントのコールバック コントラクト インプ:
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
internal class ClientCallBackContractImplementation : IClientCallBackContract
{
public void AddSeeders(int TorrentID, IEnumerable<ReplacementObjects.Client> Clients)
{
....
}
}
同じコードがクライアント コンソール アプリケーションでは機能しますが、クライアント Windows アプリケーションでは機能しません。