J'ai un service WCF à partir de laquelle je souhaite retourner un DataTable. Je sais que c'est souvent un sujet très controversé, quant à savoir si ou de ne pas retourner les tables de données est une bonne pratique. Mettons cela de côté pour un moment.
Quand j'ai créer une Table de données à partir de zéro, comme ci-dessous, il n'y a aucun problème que ce soit. La table est créée, renseigné et retourné au client, et tout est bien:
[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;
}
Cependant, dès que je sors, et de frapper la base de données pour créer le tableau, ci-dessous, je reçois un CommunicationException "La connexion sous-jacente a été fermée: La connexion a été fermée de façon inattendue."
[DataContract]
public DataTable GetTbl()
{
DataTable tbl = new DataTable("testTbl");
//populate table with sql query
return tbl;
}
La table est remplie correctement sur le côté serveur. Il est beaucoup plus petite que la table de test que j'ai bouclé et retourné, et la requête est petit et rapide, il n'est pas question ici avec des délais d'attente ou de transfert de données volumineuses. Exactement les mêmes fonctions et DataContracts/ServiceContracts/BehaviorContracts sont utilisés.
Pourquoi la façon dont la table est remplie a aucune incidence sur la table son retour avec succès??