我有,我必须创建一个主机应用程序WFC(4.0)服务的DLL。该DLL非常简单,并具有以下接口:WCF服务(DLL)主机应用
[ServiceContract(CallbackContract=typeof(IChatServiceCallback))]
public interface IService {
[OperationContract]
Guid Subscribe();
}
public interface IServiceCallback {
void NotifyClient(strign message);
}
我尝试创建服务时出现问题。当我创建从客户端的通道到主机,我得到以下异常:“的的InstanceContext提供给的ChannelFactory包含未实现CallbackContractType‘Client.MyServiceReference.IServiceCallback’一个UserObjecct。”
我发现,在ServiceReference对象浏览器ClientObject不包含IServiceCallback接口。在这里我correspoding主机代码:
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主机应用程序?
客户机侧: 尝试{ clientID的= client.Subscribe(); < - 引发异常。 }赶上(例外){ MessageBox.Show(ex.Message, “错误”,MessageBoxButton.OK); }
谢谢,但有主机实现了服务功能。我有一个包含实现的服务。意思是我在dll中也有接口和类,所以我不想在主机应用程序中重写这些接口和类。 – Wrath 2012-04-04 08:54:07
那么你为什么要在服务主机中使用ChannelFactory呢? ChannelFactory用于客户端连接到服务。 – 2012-04-04 09:16:19
什么ChannelFactory?哪里?我认为你没有充分了解我的问题。我有一个完整的服务,我得到了一个.dll库。我必须创建一个托管服务并接收客户端连接的主机应用程序。 我不知道你刚刚从哪里得到那个ChannelFactory。我只是说你给我的链接不适合我的问题。我有准备好的服务,我只需要将它与回调界面进行正确的托管。在您最近给我的链接上,服务在主机上实现。我无法使用它,因为我的服务是在我想要使用的DLL中实现的。 – Wrath 2012-04-04 09:58:24