Este es un problema extraño que estoy teniendo con WCF al intentar enviar DataTable en la respuesta. Tengo el siguiente contrato de servicios:Devolver objetos DataTable con el servicio WCF
[ServiceContract]
public interface ISapphireDataService {
[OperationContract]
DataTable LoadData(string query, DateTime start, DateTime end);
[OperationContract]
string LoadDataTest();
}
Y la raíz de la aplicación de los métodos (donde el proveedor es una clase que hace la llamada base de datos y vuelve de nuevo un DataTable):
public DataTable LoadData(string query, DateTime start, DateTime end) {
//DataSet temp = new DataSet();
//temp.Tables.Add(provider.LoadData(query, start, end).Copy());
//return temp;
return provider.LoadData(query, start, end).Copy();
}
public string LoadDataTest() {
return "Hello World!";
}
Ahora, cuando dejarlo así, siempre me sale un error al llamar al método LoadData (...): se ha producido
un error al recibir la respuesta HTTP a http://localhost:8731/Design_Time_Addresses/DataProviderServiceLibrary/SapphireDataService/. Esto podría deberse a que el enlace del punto final del servicio no utiliza el protocolo HTTP .
Esto también podría deberse a un contexto de solicitud HTTP que es cancelado por el servidor (posiblemente debido a que el servicio se está cerrando).
Consulte los registros del servidor para obtener más información.
Esto es bastante extraño porque el servicio está configurado para usar wsHttpBinding, que supongo que utiliza HTTP propocol. ¡Este error no ocurre si trato de llamar al método LoadDataTest()!
¡Así que lo que he hecho fue poner esta tabla que obtuve de la base de datos en un objeto DataSet y funcionó! Sin errores ni nada por el estilo. PERO, la tabla que se devolvió en el DataSet estaba VACÍA. Todos los campos son nulos y no hay datos ha sido transferida/deserializado adecuadamente, parece :(
Esto parece ser un problema común pero todavía estoy de ver una respuesta a esta que funciona. ¿Alguna idea?
Básicamente, solo una palabra de consejo: NO ! :-) –