このようなWCFサービス契約があるとします
[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
// some methods
}
サービスの実装はInstanceContextMode.Single設定されてInstanceContextMode
おり、ICallback1次のようなものです
public interface ICallback1
{
[OperationContract]
void Report(int someValue);
}
クライアント側では、 ICallback1 を実装するクラスを持つことができます
class Callback1 : ICallback1
{
public void Report(int someValue)
{
// alert client
}
}
そして、このようなクライアントサービス参照を作成します
Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1()));
これは正常に動作します。問題は、コールバックに関心のないクライアントがいくつかあることです。そのため、そのようなクライアントのコールバック インターフェイスを実装する必要はないと考えたので、これを試しました。
Service1Client serviceClient = new Service1Client(null);
と
Service1Client serviceClient = new Service1Client(new InstanceContext(null));
両方とも、parameter cannot be null. 私の質問は、クライアントがコールバックに関心がない場合、コールバック オブジェクトを渡さずにサービス参照を作成するにはどうすればよいかということです。唯一の要件は、すべてのクライアントが同じサービスと通信する必要があることですが、それ以外の場合はサービスを再構築できます。何かご意見は ?
編集:
SessionMode = SessionMode.Allowed代わりに ServiceContractも試し ましSessionMode.Requiredたが、どちらも役に立ちませんでした。