ASP.NET MVC4 웹 API를 사용하여 제품 목록을 반환하는 RESTful 웹 서비스를 만들려고합니다. 내 서비스를 실행하고 브라우저에서 다음 URL을 호출 할 때 여기 내 컨트롤러 클래스ASP.NET MVC4 웹 API 컨트롤러 serialization
public class ProductController : ApiController
{
public IEnumerable<Product> GetProducts()
{
WebCatalogContext dbcontext = DatabaseConfig.Instance.Context;
List<Product> plist = dbcontext.Products.ToList();
return plist;
}
}
입니다 :/API/제품, 나는 System.Runtime.Serialization.SerializationException를 얻을. 나는 내 plist 객체를 들여다 보았고 아무 문제가 없다. 내 제품 클래스에서 ProductCategory에 대한 참조를 제거하면
[DataContract(Name = "p")]
[Serializable]
public class Product
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DataMember(Name = "id")]
public int Id { get; set; }
[Required, MaxLength(50)]
[DataMember(Name = "ti")]
public string Title { get; set; }
[Required]
[DataMember(Name = "de")]
public string Description { get; set; }
[Required]
[DataMember(Name = "ph")]
public string PhotoURL { get; set; }
[DataMember(Name = "ca")]
public virtual ProductCategory Category { get; set; }
}
[DataContract(Name="pc")]
[Serializable]
public class ProductCategory
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DataMember(Name="id")]
public int Id { get; set; }
[DataMember(Name="nm")]
public string Name { get; set; }
}
이 모든 일이 잘 작동 :
여기 내 데이터 모델이다. 그러나 그것을 포함 시키면 다음과 같은 예외가 발생합니다.
Type 'System.Data.Entity.DynamicProxies.Product_664E9A0AA1F165A26C342B508BFFF1279FD3FE059285225BDA19F407A29A9CAD' with data contract name 'Product_664E9A0AA1F165A26C342B508BFFF1279FD3FE059285225BDA19F407A29A9CAD: http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies ' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
내가 놓친 거지 대해 어떤 생각? 이 게으른 로딩을 수행 할 수 있도록
감사
답변 주셔서 감사합니다. 매우 도움이됩니다. – Furkan