сложные объекты для WCF? - PullRequest
       4

сложные объекты для WCF?

1 голос
/ 07 февраля 2012

У меня проблема с вызовом службы WCF из JQuery AJAX.GetUserDetails работает нормально, если я не пытаюсь добавить этот код в класс User:

[DataMember]
public virtual Role Role { get; set; }

После добавления кода я получаю состояние ошибки 12152. Если я закомментирую атрибут [DataMember] метода Role, все будет работать.

Вот OperationContract для метода:

    [OperationContract]
    [WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Wrapped
    )]
User GetUserDetails(string userName);

И класс пользователя:

    [DataContract]
[KnownType(typeof(Role))]
public class User 
{
    [DataMember]
    public virtual int UserId { get; set; }
    [DataMember]
    public virtual string UserName { get; set; }
    [DataMember]
    public virtual string FirstName { get; set; }
    [DataMember]
    public virtual string LastName { get; set; }
    [DataMember]
    public virtual string Email { get; set; }
    [DataMember]
    public virtual string Company { get; set; }
    [DataMember]
    public virtual string Comments { get; set; }
    [DataMember]
    public virtual bool IsApproved { get; set; }
    [DataMember]
    public virtual bool IsLocked { get; set; }
    [DataMember]
    public virtual bool LoggedIn { get; set; }

}

Роль класса

[DataContract]
public class Role
{
    [DataMember]
    public virtual string Name { get; set; }
    [DataMember]
    public virtual string Description { get; set; }
}

Буду признателен за вашу помощь!

1 Ответ

1 голос
/ 08 февраля 2012

спасибо за ваши комментарии.Включение трассировки помогло мне найти проблему.Проблема заключалась в том, что я использовал NHibernate, объект Role загружался лениво и использовался прокси для этого объекта, и этот объект прокси не мог быть сериализован.

Type 'DecoratorAopProxy_70ab9a81c5b84b6dbf624b0a94f7028e' cannot be ISerializable and have DataContractAttribute attribute.

Я отключил отложенную загрузку, и это решило проблему.Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...