Not debating the merits of whether its appropriate or sensible to return a DataTable as a response from a web service, but if you receive an error like I did make sure to check the following:
1. The DataTable needs to be named.
Before (causes an error):
public DataTable ExecuteDataTable()
{
return new DataTable();
}
After (no error):
public DataTable ExecuteDataTable()
{
return new DataTable(“Test”);
}
2. Ensure that the packet sizes configured for WCF are large enough to accommodate a serialized DataTable with the data content you have in it. Serializing a DataTable to XML results in some fairly large XML documents and can easily surpass the packet limits in the default WCF configuration.