1。我的服务在控制台应用程序上,我的客户端在Windows应用程序上。
2. 该服务有合同,我的客户有回调合同。
当客户端激活服务上的方法并且该方法激活客户端的回调但该方法不会被执行时,会出现问题! 令人震惊的是,当客户端处于控制台应用程序时,回调在相同的情况下被执行。
服务合同imp:
[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);
...
}
}
客户的回调合约imp:
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
internal class ClientCallBackContractImplementation : IClientCallBackContract
{
public void AddSeeders(int TorrentID, IEnumerable<ReplacementObjects.Client> Clients)
{
....
}
}
相同的代码适用于客户端控制台应用程序,但不适用于客户端Windows应用程序。