如何在收到OData.PageResult <t>?</t>时避免使用406

时间:2013-03-25 22:10:22

标签: 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,其中有一个原因短语说明内容不可接受。如果我定义一个新的MediaTypeWithQualityHeaderValue(&#34; application / json&#34;),它也会这样做。

我需要更改什么才能在将控制器传递给视图之前在控制器中成功使用此Api?

1 个答案:

答案 0 :(得分:4)

我认为您错过了构建OData服务的前两个步骤。正如名称所示,ODataController仅适用于OData路由。您需要构建一个表示OData服务的EDM模型,并添加一个暴露该EDM模型的OData路由。有关如何构建OData服务的详细信息,请参阅此official documentation和博客post