我有幾個關於WCF的問題: - 程序既可以作爲客戶端又可以作爲服務器? - 什麼是錯我的代碼:作爲客戶端和服務器的程序
服務:
[ServiceContract]
public interface IShout
{
[OperationContract]
String Broadcast(String message);
}
實施:
public class eveShout : IShout
{
public String Broadcast(String message)
{
return message + " reply";
}
}
我在表單構造器的服務:
ServiceHost s = new ServiceHost(typeof(IShout));
s.AddServiceEndpoint(typeof(IShout), new BasicHttpBinding(), "http://localhost:9189");
s.Open();
的,當我點擊另一個表單上的按鈕時,我想發送一條消息並獲得回覆。 我使用下面的代碼:
ChannelFactory<IShout> channel = new ChannelFactory<IShout>(new BasicHttpBinding(), "http://localhost:9189");
IShout shout = channel.CreateChannel();
String reply = shout.Broadcast("Test");
注:所有的代碼是在同一個命名空間。 注:我第一次啓動「服務器」(打開),然後應用程序繼續。
當我運行代碼時,服務器被創建。我使用netstat -a來查看端口是否打開。當我運行命令時,我得到了9189處於監聽狀態。但代碼停止在命令reply = shout(「test」)。我得到anexception,說
請求信道超時而00:00:59之後等待答覆...
你用svcutil創建代理類嗎? – 2012-08-12 09:19:36
這段代碼:1)不會編譯('eveShout.Broadcast'沒有明確實現); 2)如果你修復1,它會填充到運行時錯誤('Broadcast'方法未被標記爲'OperationContract');所以,請給我們提供真正的運行代碼示例。 – Dennis 2012-08-12 09:21:07
burning_LEGION - 我不使用svcutil。這是必須的嗎?丹尼斯:我解決了這個問題,你現在可以檢查一下嗎? – 2012-08-12 09:25:50