Tengo un método de servicio WCF bastante simple que devuelve un IQueryable, solo para probar. Quizás me equivoqué al tratar de entender para qué está diseñado IQueryable. Claramente planeo usar esto con el proveedor IQueryable de NHibernate más adelante. Pero primero me encontré con algún tipo de problema de serialización (al menos creo que podría ser el problema) cada vez que uso un método WCF devolviendo un IQueryable. Ni siquiera funciona para una cadena simple.Problemas de IQueryable con WCF
Aquí está mi código:
public IQueryable<string> GetEquipmentConfigurations()
{
var returnValue = new List<string>();
returnValue.Add("test");
return returnValue.AsQueryable();
}
Puede que no tenga mucho sentido, es sólo para comprobar si realmente conseguir esos IQueryables a través del cable utilizando WCF. Cada vez que llamo a este método usando un cliente como SoapUI obtengo una excepción de socket y un restablecimiento de conexión, exactamente como si estuviera tratando de devolver algo que no está marcado como DataContract. Pero lo único que hago aquí es intentar devolver una lista de cuerdas pésima. ¿Qué está mal con eso?
utilizo basicHttpBinding, aquí están mis ajustes:
<system.serviceModel>
<services>
<service name="EquipmentConfigurationService" behaviorConfiguration="DefaultBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/Krones.KBase/Services/EquipmentConfigurationService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="basicHttpBinding"
contract="Krones.MES.KBase.Public.Service.EquipmentDefinition.IEquipmentConfigurationService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
El atributo OperationContract está establecido para la interfaz:
[OperationContract]
IQueryable<string> GetEquipmentConfigurations();
Todo funciona bien cuando acaba de regresar de una cadena simple. De todos modos, quiero aprovechar las características de IQueryable usando LINQ más tarde.
¿Alguien alguna idea de lo que está mal aquí?
Gracias y Saludos,
Stefan
Si publica código o XML, ** por favor ** resalte esas líneas en el editor de texto y haga clic en el botón "código" (101 010) en la barra de herramientas del editor para formatear y resaltar la sintaxis. –