在OData Action中返回HttpResponseMessage

时间:2013-09-10 23:12:55

标签: asp.net-web-api odata

我想返回一个匿名类型,为此我使用HttpResponseMessage,但结果是代码406 Not Acceptable。这是我的代码

在WebApiConfig中

modelBuilder.EntitySet<Groups>("Groups");
var getComplete = modelBuilder.Entity<Groups>().Collection.Action("GetComplete");
getComplete.Returns<HttpResponseMessage>();

在控制器中

[HttpPost]
[Queryable]
public HttpResponseMessage GetComplete(ODataActionParameters parameters)
{
        return this.Request.CreateResponse(HttpStatusCode.OK,db.Groups.Select(c => new 
        {
            ID = c.ID,
            DocumentType= c.DocumentType,
            Name = c.Name ,               
            Debits = c.GroupMvtos.Sum(cm => cm.Debits) ?? 0,
            Credits = c.GroupMvtos.Sum(cm => cm.Credits) ?? 0
        }));            
}

将ApiController作为基类使用httpget方法工作正常,但在odata动作中使用EntitySetController不会。

任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

OData操作无法返回匿名对象。操作返回的类型必须声明为服务EDM模型。