我正在尝试使用webAPI将一些数据返回到客户端页面。请尝试从浏览器访问api /控制器时看到当前看到的异常
栈跟踪
System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiTypeAtTopLevel(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle originalDeclaredTypeHandle, Type graphType) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.WriteObject(XmlWriter writer, Object graph) at System.Net.Http.Formatting.XmlMediaTypeFormatter.<>c__DisplayClass7.<WriteToStreamAsync>b__6() at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)
返回引号的Controller GET方法是
// GET api/<controller>
private ForumDBDataContext db = new ForumDBDataContext();
public dynamic GetQuotes()
{
var ret = (from qt in db.vwUsersQuotess.ToList()
select new
{
Message = qt.Desc,
Price= qt.price,
Qty = qt.Quantity
}).AsEnumerable();
return ret;
}
答案 0 :(得分:0)
尝试使用ToList()
代替AsEnumerable()
:
public dynamic GetQuotes()
{
var ret = (from qt in db.vwUsersQuotess
select new
{
Message = qt.Desc,
Price= qt.price,
Qty = qt.Quantity
}).ToList();
return ret;
}
如果您使用EntityFramework和SQL Server,您还可以删除对vwUsersQuotess.ToList()
的调用并直接在SQL服务器上执行投影(选择新...),以便正在执行的查询仅检索必要的栏目(描述,价格和数量)。