2010-05-06 61 views
1

我在兩臺不同的服務器上有兩個「相同的」web服務(Soap)。不要問爲什麼:-)如何將.NET WebService-Method-Result(Soap)轉換爲其原始數據類型?

WebService-1決定它是否處理請求本身,或者它是否將請求傳遞給WebService-2。如果是這樣,WebService-2的響應應直接從WebService-1返回。

響應數據類型很複雜並且是自定義的。使用像'int'或'string'這樣簡單的數據類型就沒有問題了。

WebService-2的響應是一個序列化對象(我認爲它被稱爲「存根」),並且不能將此對象作爲WebService-1的響應傳遞,因爲對象的類型doesn' t匹配。

是否有一種簡單的方法將序列化的數據類型轉換爲其原始類型而不需要建立複雜的轉換器?

回答

1

是 - 如何實現此功能取決於您使用的是WCF還是舊式Web服務。

本質上,您希望Web參考工具(分別爲svcutil.exe或wsdl.exe)確定webservice的結果實際上是「衆所周知的」對象類型 - 就像它對許多核心框架對象。

在WCF中,這通常通過確保您的合約保存在引用的程序集中並使用名稱空間屬性進行修飾來實現。如果你這樣做,當你添加一個對你的webservice的引用時,它應該原生使用你的類,而不是生成一個類似的代理類。

如果您使用舊式Web服務,則必須使用SchemaImporter項目進行研究 - 這將允許wsdl.exe工具識別您的類型並正確使用它們。應該指出,這只是在設計時才需要的 - 在部署期間不需要這樣的措施。

+0

感謝您的快速回答,但是如何在舊式webservice中實現KnownType-Attribute?我只能在WCF上找到它。也許你有我的代碼片段?謝謝! – Marc 2010-05-06 11:25:48

+0

誤導了你 - 你實際尋找的是Schema進口商擴展。自2005年以來沒有做過一次 - 所以請原諒我的糟糕記憶。此處的說明:http://www.microsoft.com/belux/msdn/nl/community/columns/jdruyts/wsproxy.mspx – 2010-05-07 07:30:26

相關問題