일반 기본 클래스에서 파생되는 클래스가 2 개 있습니다.
사용자 지정 개체 직렬화
[Serializable()]
[XmlInclude(typeof(User))]
[XmlInclude(typeof(File))]
public class BaseEntity<T>
{
private long id;
[XmlAttribute(AttributeName = "id")]
public virtual long ID
{
get { return this.id; }
set { this.id = value; }
}
}
[Serializable()]
public class User : BaseEntity<User>
{
private string userName;
private string sharedDirectory;
private bool connected;
[XmlAttribute(AttributeName = "UserName")]
public virtual string UserName
{
get { return this.userName; }
set { this.userName = value; }
}
[XmlAttribute(AttributeName = "SharedDirectory")]
public virtual string SharedDirectory
{
get { return this.sharedDirectory; }
set { this.sharedDirectory = value; }
}
[XmlAttribute(AttributeName = "IsConnected")]
public virtual bool IsConnected
{
get { return this.connected; }
set { this.connected = value; }
}
}
[Serializable()]
public class File : BaseEntity<File>
{
private string name;
private User user;
[XmlAttribute(AttributeName = "Name")]
public virtual string Name
{
get { return this.name; }
set { this.name = value; }
}
[XmlElement(ElementName = "User", Type = typeof(User))]
public virtual User User
{
get { return this.user; }
set { this.user = value; }
}
}
나는 파일 (목록)의 목록을 반환 웹 서비스 (안 WCF 서비스)이있다. 내가 서비스를 호출하면 메서드가 수행되지만 직렬화 프로세스가 실패합니다. 이것은 내가 예외 :
System.Web.Services.Protocols.SoapException : 서버 요청을 처리 할 수 없습니다. ---> System.InvalidOperationException : XML 문서를 생성하는 중 오류가 발생했습니다. System.InvalidOperationException ---> : Castle.Proxies.UserProxy 형식이 예상되지 않았습니다. XmlInclude 또는 SoapInclude 특성을 사용하여 정적으로 알지 못하는 형식을 지정합니다. \ n Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write4_User (문자열 n, 문자열 ns, 사용자 o, 부울 isNullable, 부울 needType) \ n Microsoft. Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_File (문자열 n, 문자열 ns, 파일 o, 부울 isNullable, 부울 needType) \ n Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write7_GetFilesByNameResponse (Object [] p) \ n Microsoft System.Xml.Serialization.XmlSerializer.Serialize (XmlWriter xmlWriter, Object o, XmlSerializerNamespaces 네임 스페이스, String encodingStyle, String id)에서 \ n --- End (XmlSerializer.XmlSerializer.Remote) 내부 예외 스택 추적 --- \ n System.Xml.Serialization.XmlSerializer.Serialize (XmlWriter xmlWriter, Object o, XmlSerializerNamespaces 네임 스페이스, String encodingStyle , String id) \ n System.Web.Services.Protocols.SoapServerProtocol.WriteReturns (Object [] returnValues, Stream outputStream) \ n System.Web.Services.Protocols.WebServiceHandler.WriteReturns (Object [] returnValues) \ n at \ System.Web.Services.Protocols.WebServiceHandler.Invoke() \ n - 내부 예외 스택 추적 끝 ---
아무도 이유는 무엇입니까?