2012-11-07 130 views
3

我不知道這是一個錯誤/功能,但我需要找到一種方法使其工作。Silverlight與RIA WCF項目無法添加常規WCF服務參考

要重新創建,請使用VS2012,打開啓用了RIA服務的新SL5項目。創建另一個項目,添加一個簡單的WCF服務(或啓用SL的WCF)並添加一個接受或返回一個簡單對象(我有一個包含一個字符串屬性的對象)的方法。嘗試並將其作爲服務參考添加到您的SL項目中。您將在警告中收到此錯誤,其中包括:

定製工具警告: 未找到與Silverlight 5兼容的端點。生成的客戶端類將不可用,除非通過構造函數提供端點信息。

並且實際上不生成生成的代碼。

我發現,如果我從服務方法中刪除對象,並使用簡單的字符串/ int /布爾代替,引用添加就好了。此外,如果我將相同的服務添加到沒有RIA的常規SL應用程序,則所有功能都可以像您所期望的那樣工作。一旦我在這個服務正在工作的應用程序上啓用RIA並更新服務引用,生成的代碼就會再次消失。

我記得這用於工作,因爲我有使用RIA和外部WCF服務的項目。這是一個新的VS2012嗎?有沒有辦法解決這個問題?

感謝,

的Eyal

回答

7

我可以複製的問題,似乎只有當Silverlight客戶端有2 System.ServiceModel.DomainServices.Client和System.ServiceModel.DomainServices.Client發生。在其引用程序集中的Web程序集。且僅當它的目標SL 5.

我已經找到2種解決方法,我建議你嘗試,如果您的情況允許:

1)將Silverlight應用程序爲目標Silverlight 4中,而不是5或 2)右鍵單單擊服務參考並要求進行配置。 單擊複選框以「重新使用指定的引用程序集中的類型」 並選擇除上述2的之外的所有組件

這似乎是與SL 5或VS2012相關的錯誤。如果我找到更滿意的答案,我會轉貼。

+0

這實際上幫了不少忙。我不知道這是Silverlight 5和VS2012的Bug,直到我注意到你的建議。更新服務參考時,Silverlight 4沒問題。 –

+0

我曾與VS 2015(2012年爲我工作)的問題。我必須完全禁用「重用類型...」複選框才能使其工作,只是禁用這兩個程序集是不夠的。 但是,謝謝你的建議,它指出了我的正確方向。 – Tobias

1

問題是因爲s​​ilverlight 5和vs 2012有一些bug。 [它可以通過重啓vs2012來解決]

如果你看看你的ServiceRefrences.ClientConfig會看到它是空的。您需要在此處手動輸入服務參考。我重視我的配置頁面的一個例子,則需要相應地更改名稱

<configuration> 
<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_IService2" maxBufferSize="2147483647" 
       maxReceivedMessageSize="2147483647"> 
       <security mode="None" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="../Service2.svc" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IService2" contract="ServiceReference1.IService2" 
      name="BasicHttpBinding_IService2" /> 
    </client> 
</system.serviceModel>