[英]ASP.NET MVC4 Web API Interfaces as Data Contract
我有一个MVC4 Web API服务,适用于具体的数据类型。 但是,当我将接口指定为协定并尝试从操作中返回具体类型时,它将引发错误
public interface IData
{
string NameText {get;set;}
}
[KnownType(typeof(IData))]
public class Data : IData
{
string NameText {get;set;}
}
“ ObjectContent`1”类型未能序列化内容类型“ application / xml”的响应主体; 字符集= UTF-8' 。
考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型的列表中-例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型的列表中。
我尝试在指定接口类型的具体类型上添加一个KnownType合同,但是它不起作用。
是否可以在MVC Web API中将接口指定为服务的DataContracts? 这曾经在WCF中起作用
[KnownType]
用于指定具体的类,而不是接口。 如果您指定哪些类使用[KnownType]
实现IData,那么至少MVC知道必须序列化/反序列化的类型:
[KnownType(typeof(MyDataThingy1))]
public class MyDataThingy1 : IData
{ ... }
[KnownType(typeof(MyDataThingy2))]
public class MyDataThingy2 : IData
{ ... }
这应该可以解决问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.