相关疑难解决方法(0)

通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信

通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态.

什么是这个错误,我将如何解决它?

c# wcf

146
推荐指数
3
解决办法
25万
查看次数

在WCF/.NET中返回DataTable

我有一个WCF服务,我想从中返回一个DataTable.我知道这往往是一个备受争议的话题,至于返回DataTables是否是一个好习惯.让我们暂时搁置一下.

当我从头开始创建DataTable时,如下所示,没有任何问题.该表已创建,填充并返回给客户端,一切都很好:

[DataContract]
public DataTable GetTbl()
{
    DataTable tbl = new DataTable("testTbl");
    for(int i=0;i<100;i++)
    {
        tbl.Columns.Add(i);
        tbl.Rows.Add(new string[]{"testValue"});
    }
    return tbl;
}
Run Code Online (Sandbox Code Playgroud)

但是,只要我出去打开数据库来创建表,如下所示,我得到一个CommunicationException"底层连接已关闭:连接意外关闭."

[DataContract]
public DataTable GetTbl()
{
    DataTable tbl = new DataTable("testTbl");
    //Populate table with SQL query

    return tbl;
}
Run Code Online (Sandbox Code Playgroud)

该表正在服务器端正确填充.它比我循环并返回的测试表要小得多,并且查询小而快 - 这里没有超时或大数据传输的问题.正在使用相同的功能和DataContracts/ServiceContracts/BehaviorContracts.

为什么填充表的方式对表成功返回有什么影响?

.net c# datatable wcf web-services

50
推荐指数
4
解决办法
5万
查看次数

标签 统计

c# ×2

wcf ×2

.net ×1

datatable ×1

web-services ×1