使用返回 DataTable 的 XML Web 服务时出现问题

转载 2004年08月04日 20:55:00

使用返回 DataTable 的 XML Web 服务时出现问题适用于

本文的发布号曾为 CHS306134

症状

在 XML Web 服务从它的一个 Web 方法返回 DataTable 的情况下,如果您浏览到该 XML Web 服务的 URL,可能会出现下面的错误消息:
System.Data.DataRelation 无法序列化,因为它不具有默认的公共构造函数。
当您尝试在 Visual Studio .NET 集成开发环境 (IDE) 中设置对该 XML Web 服务的 Web 引用时,也可能看到类似下文的错误消息:
内部服务器错误。 无法请求“http://localhost/Webservice1/Service1.asmx?WSDL”。 服务器响应了错误代码“ProtocolError”。

原因

DataTableDataRowDataView DataViewManager 对象无法序列化并且无法从 XML Web 服务返回。 若要使返回结果比完整的 DataSet 少,必须将要返回的数据复制到一个新 DataSet 中。

解决方案

若要解决此问题,应返回 DataSet 而不应返回 DataTableDataSet 对象可以包含一个或多个 DataTable 对象。

状态

这种现象是设计使然。

更多信息

重现问题的步骤

备注 : 我们为 Visual Basic .Net 和 Visual C# .Net 提供了代码示例。
  1. 将返回 DataTable 的 Web 方法添加到现有的 XML Web 服务。 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。
    
    
  2. 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。编译 XML Web 服务。
  3. 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。浏览到刚才添加了代码的 XML Web 服务的 URL。 注意,将会出现错误消息。
  4. 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。如下所示修改代码以返回 DataSet 而不返回 DataTable
    
    
  5. 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。编译 XML Web 服务。
  6. 下面的代码创建与 Microsoft SQL Server 数据库的连接并检索 Authors 表。 如果您要使用该代码,请对它进行修改以连接到您的 SQL Server 计算机。浏览到刚才添加了上述代码的 XML Web 服务的 URL。 注意,此次不会出现错误消息。

webservice返回DataTable报错无法序列化

 今天写了一个webservice接口,返回类型是DataTable ,运行的时候报以下错误: System.InvalidOperationException: 生成 XML 文档时出错。 ...
  • bobwu
  • bobwu
  • 2015-09-11 14:09:36
  • 2326

webservice中参数类型为datatable,报错“生成 XML 文档时出错”

webservice中参数类型为datatable,报错“生成 XML 文档时出错”, 后来发现是由于DataTable的TableName没有赋值引起的,只有在调用前加上: dataTable...
  • wang_cel
  • wang_cel
  • 2013-08-31 23:35:24
  • 3865

asp.net Ajax 直接返回DataTable

1. 在 aspx 页面加入                             注意:  EnablePageMethods="true"  2.在后台加上共享方法      ...
  • Houluoxuan_168
  • Houluoxuan_168
  • 2010-10-22 11:21:00
  • 1295

【Debug】双击cpp文件无法直接打开,提示“向程序发送命令时出现问题”

打开注册表编辑器,将[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\DDECache\...
  • hellokandy
  • hellokandy
  • 2016-06-19 11:16:04
  • 1045

Android利用Soap读取WebService并且解析XML的DataSet数据

Android利用Soap读取WebService并且解析XML的DataSet数据 一、Soap的结构          调用webService需要以下几个参数:命名空间、Soap Action、...
  • u010499087
  • u010499087
  • 2014-05-13 16:41:50
  • 6119

WebService返回DataTable

webservice返回datatable时报序列化错误 以下三种方案的实质应该都是序列化的,有一位大神说过“跨进程的不序列化应该去面壁!”O(∩_∩)O哈哈哈~ 解决方案一:返回dataset ...
  • wxnjob
  • wxnjob
  • 2013-03-05 16:03:17
  • 2190

WCF返回表datatable时的解决

在WCF中有时返回值类型是一张表,就会遇到反序列化的问题。解决该问题我归纳了两种方法: 1、根据Model层的类,在服务器端将Table转化成List,在客户端再将List转化为table   /...
  • u010761763
  • u010761763
  • 2013-08-04 18:18:17
  • 1583

WebApi接口返回json,xml,text纯文本等

[Route("api/Message/MessageList/")] [HttpGet] public HttpResponseMessage MessageList() { Respons...
  • smartsmile2012
  • smartsmile2012
  • 2017-09-20 14:56:05
  • 648

ANDROID调用VS2013 ASP.NET WEBAPI 返回DATATABLE 注意

VS2013 WEBAPI项目直接就可以返回DATATABLE,并且IIS会处理好返回JSON字符串,不需要在服务端做任何额外的转换工作。 但我在ANDROID里调用时发现不能把JSON字符串转换成...
  • startexcel
  • startexcel
  • 2013-12-30 18:04:07
  • 4362

WebApi接口 - 响应输出xml和json

WebApi接口 - 响应输出xml和json
  • huwei2003
  • huwei2003
  • 2017-02-25 08:09:04
  • 3179
收藏助手
不良信息举报
您举报文章:使用返回 DataTable 的 XML Web 服务时出现问题
举报原因:
原因补充:

(最多只允许输入30个字)