接收 OData.PageResult 时如何避免 406?

2024-01-04

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

我需要更改什么才能在控制器中成功使用此 Api,然后再将其传递到视图?


我认为您缺少构建 OData 服务的前两个步骤。 ODataController,顾名思义,仅适用于 OData 路由。您需要构建代表 OData 服务的 EDM 模型,并添加公开该 EDM 模型的 OData 路由。参考这个官方文档 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api和博客post http://blogs.msdn.com/b/webdev/archive/2013/01/29/getting-started-with-asp-net-webapi-odata-in-3-simple-steps.aspx有关如何构建 OData 服务的详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接收 OData.PageResult 时如何避免 406? 的相关文章

随机推荐