WCF服务(DLL)主机应用程序

时间:2012-04-04 07:31:40

标签: wcf c#-4.0 .net-4.0

我有一个WFC(4.0)服务dll,我必须为其创建一个主机应用程序。该DLL非常简单,并具有以下接口:

    [ServiceContract(CallbackContract=typeof(IChatServiceCallback))]
    public interface IService {
        [OperationContract]
        Guid Subscribe();
    }

    public interface IServiceCallback {
         void NotifyClient(strign message);
    }

当我尝试创建服务时出现问题。当我创建从客户端到主机的通道时,我得到以下异常:“提供给ChannelFactory的InstanceContext包含一个UserObjecct,它不实现CallbackContractType'Client.MyServiceReference.IServiceCallback'。”

我发现在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);
    }

如何为包含在客户端实现的回调接口的Service dll创建主机应用程序?

客户方:         尝试{              clientID = client.Subscribe(); &lt; - 引发异常。         } catch(Exception ex){              MessageBox.Show(ex.Message,“Error”,MessageBoxButton.OK);         }

1 个答案:

答案 0 :(得分:1)

您可以直接在客户端上使用服务合同程序集吗?如果是这样,您可以使用DuplexChannelFactory并完全避免客户端服务引用代码。

示例here

我知道这并没有回答你的问题,但它可以帮助你解决它。