2011-05-25 171 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,并且可以使用数据集的数据表