日期:2014-05-18  浏览次数:20892 次

WCF传递datatable的问题
服务器上的接口和函数都是没有问题的,客户端可以从服务器上的其它函数里得到返回值,如整型的,字符型的都可以
现在客户端要从服务器上得到一个返回的datatable,服务端没错,但客户端报错了,错误提示如下:

接收对 http://localhost:8000/ 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参阅服务器日志。





------解决方案--------------------
很简单的问题,我也碰到过,自己解决了。
DataTable必须设置名称。
例如:DataTable dt = new DataTable("Table1");
这里的“Table1”必须有,但是命名随意,这个缺少就会序列化报错,而且错误原因会不明,显示不出来。
------解决方案--------------------
还有一个要注意的,必须在服务接口的声明上方添加DBNull的类型说明,否则也会出问题(遇到为空列的话),例如:
C# code
    [ServiceKnownType(typeof(DBNull))]
    [ServiceContract]
    public interface IServer
    {

    }

------解决方案--------------------
LS正解+1
------解决方案--------------------
我做WebServer的时候遇到一个
在Web服务中用DataTable未设置名称就会报这个错误,解决方法:
DataTable dt=new DataTable();
dt.TableName = "MyTable";就OK了
当然也可不用Datatable而用DataSet

------解决方案--------------------
datatable 是。net特有的类型
还是用对象数组把 就是实体类
------解决方案--------------------
学到了,不告诉你们
------解决方案--------------------
顶一个,一般不用对象时,我都用DataSet还真没碰到这个,学习了!