WCF中序列化DataTable出错

  今天用wcf传送datatable时出现下列错误。我估计是序列化的问题。

"An error occurred while receiving the HTTP response to ****.svc. 
This could be due to the service endpoint binding not using the HTTP protocol. ……"

  网上有人给出了解决方法,即设置DataTable的TableName属性即可。

 

样例代码:

  建立服务契约。契约中一个返加DataTable的方法,一个是返回DataSet的方法。

namespace  NavigateService
{
    [ServiceContract]
    
public   interface  INavigateService
    {
        [OperationContract]
        DataTable GetTableAllData(
string  tableName);

        [OperationContract]
        DataSet GetDataSet(List
< DataSetObject >  tables);
    }
}


  实现契约,MsSql类是自己建立的一个类,用于取数据。

  注意:在返回DataTable的GetTableAllData方法中, tableResult设置了TableName属性。这样Wcf序列化时就不会出错。

     而返回DataSet的方法不需要作任何设置。

using  System.Data;
using  DL;

namespace  NavigateService
{
    public   class  NavigateService : INavigateService
    {
        MsSql msSql 
=   null ;
        
public  NavigateService()
        {
            msSql 
=   new  MsSql();
        }

        
public  DataTable GetTableAllData( string  tableName)
        {
            DataTable tableResult 
=   null ;
            tableResult 
=  msSql.GetTableAllData(tableName);
            tableResult.
TableName  = "navigateData" ;
            
return  tableResult;
        }

        
public  DataSet GetDataSet(List < DataSetObject >  tables)
        {
            DataSet resultDataSet 
=   new  DataSet();
            resultDataSet 
=  msSql.GetDataSet(tables);
            
return  resultDataSet;
        }
    }
}


 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Datatable)