2009-01-19 84 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对象。哪些语言可以正确解析。这是一个更多的工作,但会产生可用的服务。