TARUN
TARUN

Reputation: 241

Asp.net web Api with ODATA returns 406 Not Acceptable

I am trying to implement a web API endpoint that returns ODATA. But when I am trying to hit the endpoint the code in the method was executing successfully but getting 406 Not Acceptable error. Below is my code.

Controller:

    using Microsoft.AspNet.OData;
using Microsoft.AspNet.OData.Extensions;
using Microsoft.AspNet.OData.Query;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

    public class SalesToolsController : ODataBaseController
    {
        DBSQLDataContext db = new DBSQLDataContext();

        [Route("api/odata/SalesTools")]
        [HttpGet]
        [EnableQuery]
        public IEnumerable<SalesTool> Get(ODataQueryOptions options)
        {
            var documents = db.SalesTools;
        var countQuery = options.Filter.ApplyTo(documents, new ODataQuerySettings()) as IQueryable<SalesTool>;
        var count = countQuery.Count();
        return documents;
        }

        [EnableQuery]
        public SingleResult<SalesTool> Get([FromODataUri] int key)
        {
            IQueryable<SalesTool> result = db.SalesTools.Where(p => p.Id == key);
            return SingleResult.Create(result);
        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }

WebApiConfig:

using Microsoft.AspNet.OData.Builder;
using Microsoft.AspNet.OData.Extensions;
using System.Web.Http;
public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();
            config.EnableDependencyInjection();
            var salesTools = new ODataConventionModelBuilder();
            salesTools.EntitySet<SalesTool>("SalesTools");
            config.MapODataServiceRoute("SalesTools", "odata", salesTools.GetEdmModel());
           
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
          
        }
    }

Can anyone help me with this, please?

Update:

enter image description here

Upvotes: 0

Views: 403

Answers (0)

Related Questions