【问题标题】:complex objects for WCF?WCF 的复杂对象?
【发布时间】:2012-02-07 18:34:19
【问题描述】:

我在从 JQuery AJAX 调用 WCF 服务时遇到问题。 GetUserDetails 工作正常,除非我尝试将此代码添加到 User 类:

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

添加代码后,我得到错误状态 12152。如果我注释掉 Role 方法的 [DataMember] 属性,一切正常。

这是该方法的 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; }
}

非常感谢您的帮助!

【问题讨论】:

  • 您是否打开了 WCF 诊断以获取底层异常?
  • 我在 web config 中有这段代码: 但作为响应,我只得到状态 12152。请看截图:link
  • 还有更多。您可以通过以下方式获取更多信息:msdn.microsoft.com/en-us/library/ms733025.aspx
  • 如果您“手动”轮询与 AJAX 调用相同的 URL,您的浏览器会返回什么? PS:您可以通过单击编辑器中的图像图标将图像嵌入到您的帖子中

标签: jquery asp.net .net ajax wcf


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多