我正在尋找從W /託管它的同一個.exe連接到WCF服務。我的主機服務在WPF應用程序爲:的當通過WPF自主主機連接時,通過net.tcp服務WCF超時
<service name="Namespace.Service" >
<endpoint address="Contract/tcp"
binding="netTcpBinding"
contract="Namespace.IContract"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:9002"/>
</baseAddresses>
</host>
</service>
ServiceHost svc = new ServiceHost(typeof("Namespace.Service"));
svc.Open();
和配置文件這讓我火了一個單獨的VS實例,創建一個控制檯應用程序,並執行成功如下:
IChannelFactory<IContract> facContract = new ChannelFactory<IContract>(new NetTcpBinding());
IContract contract = facContract.CreateChannel(new EndpointAddress("net.tcp://localhost:9002/Contract/tcp"));
string x = contract.GetProperty; //returns value I would expect
但是如果我修改我原來的WPF的ServiceHost代碼以下,當我訪問服務(注超時異常被拋出:如果我做同樣的事情在控制檯表觀s ervice主人,我沒有得到超時...):
ServiceHost svc = new ServiceHost(typeof("Namespace.Service"));
svc.Open();
IChannelFactory<IContract> facContract = new ChannelFactory<IContract>(new NetTcpBinding());
IContract contract = facContract.CreateChannel(new EndpointAddress("net.tcp://localhost:9002/Contract/tcp"));
string x = contract.GetProperty; //<-!!WCF Timeout exception thrown..
WCF跟蹤不提供用戶互動,增加細節(只是證實了超時異常被拋出)。有什麼想法嗎? {這不是關於WCF異常管理最佳實踐的問題;我正在尋找訪問服務主機&上午由這個奇怪的超時異常}
編輯: 當服務主機是一個WPF應用程序(也許是其他人);但控制檯應用程序作爲服務主機的行爲與我預期的相同(例如,可以訪問自託管服務)。我已經更新了標題和標籤,以反映這個新的信息...提前
感謝, 牛逼
嗯......奇怪,爲什麼它不適合我然後。我確實添加了您的安全節點;沒有任何運氣。 FWIW GetProperty只是一個屬性獲取器(例如.get_GetProperty()),所以不要認爲它是任何東西。 – TOB
好吧 - 看起來像這樣可以與控制檯應用程序一起作爲服務主機使用;但不適用於WPF應用程序作爲服務主機(也許是其他人)。我會更新我的原始帖子,以便更具體。 – TOB