2012-02-07 2 views
1

JQuery AJAX에서 WCF 서비스를 호출하는 데 문제가 있습니다. 나는 모든 작품 역할 방법의 DataMember를] 속성을 주석 경우 코드 나 오류 상태 12152.를 얻을 추가WCF 용 복합 개체입니까?

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

후 : 나는 사용자 클래스에이 코드를 추가하려고하지 않는 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

+0

나는이 코드를 웹 설정에 가지고있다 : 그러나 여전히 나는 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. 

지연로드를 해제하고 문제를 해결했습니다. 고마워요!