2009-01-19 82 views
2

我在Visual Studio 2008中使用C#編寫了Web服務(我也在VS 2005中編寫過)。 我可以編寫一個測試窗體表單應用程序來使用服務沒問題。使用VS2008編寫的Web服務

我遇到的問題是從C#/ VS2003(或PHP,這是我真正的問題)消耗它。它只是給我的錯誤:

「不能鍵入 'TestIntel.WebIntel.GetSitesResponseGetSitesResult' 隱式轉換爲「System.Data.DataTable」

在Web mthod並返回一個DataTable;正如我所說的,如果消費者是在VS2005/2008中構建的,這可以正常工作。是什麼賦予了?

+0

它是什麼類型的網絡服務? ASMX? WCF? – 2009-01-19 18:31:17

+0

這是ASMX,我認爲我的問題是Chris Lively的回答。我只需要測試一下。 – DaveF 2009-01-19 23:00:44

回答

3

爲了使用DataTable,調用點(php和.net 1.1)需要知道如何將其反序列化爲可用對象。

這意味着他們將不得不有一個類似的對象,數據可以被反序列化。

顯然,PHP不能這樣做。而.net 1.1錯誤的原因是DataTable對象在1.1和2.0之間發生了很大的變化。事實上,微軟表示,.NET 1.1數據對象是BY DESIGN,不應該通過Web服務序列化。 ([http://support.microsoft.com/kb/306134][1]

如果您正在尋找一種真正的跨語言方式,那麼您需要將您的響應序列化爲標準的XML對象。哪些語言可以正確解析。這是一個更多的工作,但會產生可用的服務。