asp.net - 接收 OData.PageResult<T> 时如何避免 406?

标签 asp.net asp.net-mvc asp.net-mvc-4 odata

我有一个返回 PageResult 的 ODataController。

API 示例:

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,并带有说明内容 Not Acceptable 原因短语。如果我定义一个新的 MediaTypeWithQualityHeaderValue("application/json"),它也会执行此操作。

我需要更改什么才能在 Controller 中成功使用此 Api,然后再将其传递到 View ?

最佳答案

我认为您缺少构建 OData 服务的前两个步骤。 ODataController,顾名思义,仅适用于 OData 路由。您需要构建代表 OData 服务的 EDM 模型,并添加公开该 EDM 模型的 OData 路由。引用这个official documentation和博客 post了解如何构建 OData 服务的详细信息。

关于asp.net - 接收 OData.PageResult<T> 时如何避免 406?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625794/

相关文章:

javascript - 无法在javascript中设置元素的CSS样式

javascript - 页面加载后执行jquery ajax

asp.net-mvc - 如何将 HTML 保存到数据库并正确检索

Javascript 数组发送到 asp.net MVC Controller

javascript - 在文档或下载的超链接旁边显示实际文件大小

asp.net - LINQ to Objects 自动递增编号

asp.net - 与 StackOverflow 一样出色的其他 ASP.NET Web 应用程序有哪些?

c# - 如何在 MVC 5 中使用 jQuery AJAX 和 setInterval 加载 div?

asp.net-mvc - VB.Net 中的 ASP.Net session

c# - MVC 中的 json 对象绑定(bind)