2012-02-07 103 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. 

我已關閉延遲加載並解決了問題。非常感謝你!