2012-02-07 102 views
1

我有问题从JQuery AJAX调用WCF服务。代码添加WCF的复杂对象?

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

后,我得到的错误状态12152.如果我注释掉[数据成员]角色的方法一切工作的属性:除非我尝试将此代码添加到User类GetUserDetails工作正常。

这里的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

你打开WCF诊断来获取潜在的异常吗? – RQDQ 2012-02-07 18:38:40

+0

我有这个代码在web配置:但仍然在回应我只得到状态12152.请参阅截图:[链接](http://ScrnSht.com/sjrgle) – 2012-02-07 23:31:08

+0

还有更多。您可以通过执行以下操作获取更多信息:http://msdn.microsoft.com/en-us/library/ms733025.aspx – RQDQ 2012-02-08 12:52:05

回答

1

感谢您的意见。启用跟踪帮助我发现问题。问题是因为我使用NHibernate,Role对象被延迟加载,并且使用该对象的代理,并且该代理对象无法序列化。

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

我已关闭延迟加载并解决了问题。非常感谢你!