5

我有一个返回 PageResult 的 ODataController。

接口示例:

public PageResult<Customer> Get(ODataQueryOptions options) {
// cut some stuff out...

    PageResult<Customer> result = new PageResult<Customer>(
        searchResults as IEnumerable<Customer>,
        Request.GetNextPageLink(),
        Request.GetInlineCount());
    return result;

当我调试它时,它似乎很好并且正确构建了一个 PageResult 类以返回。网页端..

网络示例

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri(testURL);
    string searchUrl = "api/customer?$top=1&$skip=0";
    client.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose"));
    HttpResponseMessage response = client.GetAsync(searchUrl).Result;

响应是 StatusCode 406,并带有说明内容不可接受的原因短语。如果我定义一个新的 MediaTypeWithQualityHeaderValue("application/json"),它也会这样做。

我需要更改哪些内容才能在控制器中成功使用此 Api,然后再将其传递给视图?

4

1 回答 1

4

我认为您缺少构建 OData 服务的前两个步骤。顾名思义,ODataController 仅适用于 OData 路由。您需要构建一个表示您的 OData 服务的 EDM 模型,并添加一个公开该 EDM 模型的 OData 路由。有关如何构建 OData 服务的详细信息,请参阅此官方文档和博客文章。

于 2013-03-28T16:25:21.937 回答