2012-02-07 15 views
1

JQuery AJAXからWCFサービスを呼び出す際に問題が発生しました。私はすべての作品ロール方式の[DataMemberを]属性をコメントアウトした場合のコードは、私はエラーステータス12152.を取得する追加されWCFの複雑なオブジェクトですか?

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

後:私はUserクラスにこのコードを追加してみない限りGetUserDetailsが正常に動作します。

ここOperationContractメソッドのためです:

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

そして、Userクラス:

[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

+0

私はこのコードをWeb設定で持っています:それでも応答ではステータス12152のみです。スクリーンショットを参照してください:[link](http://ScrnSht.com/sjrgle) –

+0

それ以上のことがあります。 http://msdn.microsoft.com/en-us/library/ms733025.aspx – RQDQ

答えて

1

ご意見ありがとうございます。トレースを有効にすると、問題を見つけるのに役立ちました。問題は、NHibernate、Roleオブジェクトが遅延ロードされ、そのオブジェクトのプロキシが使用され、そのプロキシオブジェクトをシリアル化できなかったためです。

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

遅延読み込みを無効にして問題を解決しました。どうもありがとうございました!

関連する問題