На основании того, что вы разместили:
public InitBDResult InitBD()
{
_dc = new CentralDC();
InitBDResult result = new InitBDResult();
result.ord = _dc.Orders.First();
return result;
}
Этот метод содержится в классе, который реализует интерфейс IDBService
?? Это не совсем понятно из твоего поста ....
[DataContract]
public class InitBDResult
{
//[DataMember]
//public List<Order> Orders { get; set; }
[DataMember]
public Order ord { get; set; }
}
Является ли класс Order также отмеченным [DataContract]
и любые свойства, которые должны быть сериализованы с атрибутами [DataMember]
??
По умолчанию WCF использует сериализатор контракта данных и требует, чтобы возвращаемые классы (все они) были помечены [DataContract]
, а внутри этих классов все свойства и поля, которые должны быть возвращены в сериализованном ответе. иметь атрибут [DataMember]
.
Атрибут [Serializable]
ничего не делает для сериализации WCF по умолчанию. Читайте о сериализации WCF в журнале MSDN - настоятельно рекомендуется!
Для разработки часто полезно включить сведения об исключениях из ваших служб WCF, чтобы вы получили больше информации о том, что пошло не так. Для этого вам нужно иметь служебное поведение в вашей конфигурации:
<behaviors>
<serviceBehaviors>
<behavior name="debugging">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
и затем примените это поведение к вашей службе в вашей конфигурации:
<service name="...." behaviorConfiguration="debugging">
Тогда вы получите информацию о деталях ваших исключений, а не просто общее исключение «что-то пошло не так».