2011-05-25 115 views
0

這裏的Web服務方法:Web服務方法無法返回DataTable?

[WebMethod] 
[SoapHeader("m_Token", Direction = SoapHeaderDirection.InOut)] 
public DataTable GetUserProfile() 

這裏的代碼行我用它來調用這個方法:

DataTable DT = (DataTable) m_ServerApp.GetUserProfile(); 

下面是其編譯器會引發錯誤:

無法將類型 'WSAClient.ServerApp.GetUserProfileResponseGetUser ProfileResult'to 'System.Data.DataTable'

問題是什麼?謝謝..

+0

哪些API的哪些版本?這應該適用於老派的asmx WebServices,對於WCF來說並不那麼容易。 – 2011-05-25 13:35:21

+2

好吧,我認爲異常是相當自我解釋 - 類型不匹配。另一件事是,在我看來,將數據表作爲Web服務方法結果返回是一種不好的做法,因爲對於非.NET系統來說,這是很難理解的,我會爲自己的更具體的數據結構而努力。 – Giedrius 2011-05-25 13:35:30

+0

向我們展示ProfileResult的結構。 – canon 2011-05-25 14:24:46

回答

-1

您的客戶端代理方法正在返回類型爲WSAClient.ServerApp.GetUserProfileResponse.GetUserProfileResult的對象。您可能會發現此類型包含您的DataTable

我同意你不應該返回特定於.NET的類型。 Java客戶端不會理解什麼是System.Data.DataTable,只不過.NET客戶端會理解Java Map

+0

@downvoter:我的答案有什麼問題? – 2011-05-25 15:56:51

0

如果你的webservice正在被java客戶端使用,那麼你將破壞肥皂標準,那麼它將無法使用你的web服務。它更好地返回一個XML,這又是一個肥皂標準,在客戶端,您可以讀取數據集中的這個xml,並且可以使用數據集的數據表