ホストアプリケーションを作成する必要があるWFC(4.0)サービスdllがあります。dllは非常にシンプルで、次のインターフェイスがあります。
[ServiceContract(CallbackContract=typeof(IChatServiceCallback))]
public interface IService {
[OperationContract]
Guid Subscribe();
}
public interface IServiceCallback {
void NotifyClient(strign message);
}
私の問題は、サービスを作成しようとしたときに発生します。クライアントからホストへのチャネルを作成すると、次の例外が発生します。「ChannelFactoryに提供されたInstanceContextには、CallbackContractType'Client.MyServiceReference.IServiceCallback'を実装しないUserObjecctが含まれています。」
ServiceReferenceオブジェクトブラウザで、ClientObjectにIServiceCallbackインターフェイスが含まれていないことがわかりました。ここに私の対応するホストコードがあります:
ServiceHost host = new ServiceHost(typeof(ChatService));
try
{
host.BeginOpen(new AsyncCallback(OnOpen), host);
mre.WaitOne();
if (host.State == CommunicationState.Opened)
{
Console.WriteLine("Server is running!\nServer listens on the following endpoints:");
foreach (var endp in host.Description.Endpoints)
{
Console.WriteLine("\t{0}", endp.Address);
}
Console.WriteLine("Press <Enter> to stop the server...");
Console.ReadLine();
host.Close();
}
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}
クライアント側に実装されているコールバックインターフェイスを含むサービスdllのホストアプリケーションを作成するにはどうすればよいですか?
ClientSide:{clientID = client.Subscribe();を試してください。<-例外をスローします。} catch(Exception ex){MessageBox.Show(ex.Message、 "Error"、MessageBoxButton.OK); }