我有,我必須創建一個主機應用程序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