2011-01-14 45 views
0

有很多關於此主題的文章,但都沒有幫助我。我試圖實施可以在沒有「添加服務參考...」的情況下使用的服務,主要是通過http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2的建議。Silverlight客戶端從WCF獲得NotFound錯誤

我做了一個小項目來重現問題。 http://hotfile.com/dl/96710945/9991ac3/SilverlightApplication8.zip.html

我試着像解決方案:
- 在Silverlight 處理故障 - 跨域策略 等

所有標準檢查等服務,然後到達完成,客戶端成功創建通道等

我整個一週都有這個問題,我無法弄清楚。

每一個幫助是明智的。

+0

您應該設置並將服務添加到沒有接口的svc文件的代碼隱藏。這就是Silverlight的工作原理。 – vorrtex 2011-01-14 22:47:23

+0

使用SvcTraceViewer.exe我發現了以下錯誤:「無法查找通道接收傳入的消息,無法找到端點或SOAP操作。」 – 2011-01-17 08:51:11

回答

0

我沒有深入調查,但我認爲服務實現類的類型不好。

所以我的工廠類看起來像:

公共類TimeServiceFactory 繼承System.ServiceModel.Activation.ServiceHostFactoryBase

Public Overrides Function CreateServiceHost(ByVal constructorString As String, ByVal baseAddresses() As System.Uri) As System.ServiceModel.ServiceHostBase 
    Dim host As New ServiceHost(constructorString, baseAddresses) 

它需要在改變:

公共類TimeServiceFactory 繼承System.ServiceModel.Activation.ServiceHostFactoryBase

Public Overrides Function CreateServiceHost(ByVal constructorString As String, ByVal baseAddresses() As System.Uri) As System.ServiceModel.ServiceHostBase 
    Dim host As New ServiceHost(GetType(TimeService), baseAddresses) 

區別在於我沒有通過constructorString(它具有服務類實現類的信息),我通過了GetType(TimeService)instate,它提供了正確的類型信息。

0

丹尼斯, 嘗試在您的虛擬主機項目中創建服務。在那裏添加服務,然後你可以選擇在Silverlight應用程序中添加它作爲參考。只需在SilverlightApplication8.Web中添加一項服務即可。右鍵單擊SilverlightApplication8.Web - >添加新項目 - >在左側選擇Silverlight - >啓用Silverlight的WCF服務。然後添加對SilverlightApplication8的引用。