У меня довольно простой метод службы WCF, который возвращает IQueryable, только для тестирования. Возможно, у меня что-то не так, когда я пытаюсь понять, для чего предназначен IQueryable. Я четко планирую использовать это с провайдером IQueryable NHibernate позже. Но сначала я столкнулся с некоторыми проблемами сериализации (по крайней мере, я думаю, это может быть проблемой) при использовании метода WCF, возвращающего IQueryable. Это даже не работает для простой строки.IQueryable проблемы с использованием WCF
Вот мой код:
public IQueryable<string> GetEquipmentConfigurations()
{
var returnValue = new List<string>();
returnValue.Add("test");
return returnValue.AsQueryable();
}
Это может не иметь особого смысла, это только для тестирования, действительно ли я получить эти IQueryables по проводам с использованием WCF. Всякий раз, когда я вызываю этот метод с помощью клиента, такого как SoapUI, я получаю исключение сокета и сброс соединения, точно так же, как если бы я пытался вернуть что-то, что не помечено как DataContract. Но единственное, что я здесь делаю, это попытка вернуть какой-то паршивый список строк. Что в этом плохого?
Я использую BasicHttpBinding, вот мои настройки:
<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>
Атрибут OperationContract установлен для интерфейса:
[OperationContract]
IQueryable<string> GetEquipmentConfigurations();
Это все работает хорошо, когда просто возвращает простую строку. В любом случае, я хочу получить прибыль от функций IQueryable, используя LINQ позже.
Кто-нибудь знает, что здесь не так?
Спасибо и Cheers,
Стефан
Если вы отправляете код или XML, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «код» (101 010) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –