2012-05-28 109 views
4

當試圖增加一個服務引用到現有的WCF服務(其被提供ObservableCollection類型的集合)我得到以下錯誤消息:錯誤時添加服務引用WCF服務類型的ObservableCollection

模式類型'http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfString'尚未導入。先導入它。

我試圖將框架(在添加Web引用屏幕中)更改爲'.NET 2.0 Web Services'。在這種情況下,我沒有得到上面提到的錯誤消息,但是,我無法調用WCF服務提供的幾個函數(它們根本就沒有生成)。

任何人都可以幫助我嗎?

在此先感謝。

Ernstjan

+0

您是否直接從您的服務方法返回ObservableCollection ? – Yeonho

回答

0

微軟定義了「http://schemas.microsoft.com/2003/10/Serialization/Arrays的名字空間,非MS都會有問題找到這樣定義「ArrayOfString」和序列化數組它:

[CollectionDataContract(ItemName = "string", Namespace = "SAME NAMESPACE AS YOUR PROJECT!!!")] 

public class ArrayOfString : List<string> 

{ 

} 

然後你應該沒問題。

+0

它只爲那些簡單類型的數組使用該命名空間。用戶定義類型的數組使用該類型的名稱空間。 請參閱[我的測試]中的'GetListOfFoo()'(https://github.com/mono/mono/blob/ea570f3a7676871dd565a706e28f99089e660dbc/mcs/class/System.Runtime.Serialization/Test/Resources/WSDL/collections.wsdl)。 –

0

這是Mono的WSDL Importer中的一個錯誤,它並不完全支持集合類型。

我剛剛實現了這個,所以你很快會在Monotouch中看到這個。作爲臨時解決方法,您需要使用Visual Studio或Svcutil.exe在Windows上創建客戶端代理。