2012-04-13 23 views
1

我需要將未知類型從我的客戶端傳遞給wcf服務,發送自定義類型爲wcf服務

類型對於服務是未知的。

例如我有一個類客戶,我創建了一個序列化的實例併發送到服務,問題出現時,我需要反序列化我必須提供類型以將該desrialized對象。

類型不能序列,當我試圖得到以下錯誤:

{"Type 'System.RuntimeType' with data contract name 
'RuntimeType:http://schemas.datacontract.org/2004/07/System' is not expected. Consider 
    using a DataContractResolver or add any types not known statically to the list of 
    known types - for example, by using the KnownTypeAttribute attribute or by adding 
    them to the list of known types passed to DataContractSerializer."} 

我需要尋找周圍的工作對於這個問題,任何想法?

只是概括地說:

我正在尋找一個發送未知類型的WCF服務的解決方法。

+1

您能否澄清一下:「另一端」是否具有:相同的客戶類,但事先並不知道傳入數據是客戶實例,b:不同但類似/兼容的客戶類,c:對客戶沒有任何瞭解? – 2012-04-13 22:54:50

+1

一旦你收到它,你將如何使用這個對象? – 2012-04-13 22:57:52

+0

@MarcGravell c - 不知道客戶類別的任何信息 – 2012-04-13 23:03:17

回答

2

如果另一端不瞭解它(註釋),那麼你不可能反序列化。即使使用基於類型的序列化器(BinaryFormatter/NetDataContractSerializer),也無法做到這一點。

如果你發送的是完全的外部數據,那麼你基本上只限於XML或JSON之類的東西,即使如此,它的含義也有點含糊不清(是一個字符串?int?float?long?)。

WCF不適合您的場景(也不是大多數其他基於合同的堆棧;大多數系統希望能夠理解傳入數據)。

+0

是否可以發送包含我的客戶類型 的整個dll,然後將其加載到服務端? – 2012-04-13 23:18:00

+0

我不會說WCF不適合。 SOAP可能不會,但是運行JSON或XML的RESTful WCF Web服務將會很好。 – 2012-04-13 23:51:30

+0

我需要創建一個動態類型的處理單元, ,它解決了發送給服務的特定對象類型。 我需要鍵入以解析類型的執行方法 – 2012-04-14 00:04:26