【问题标题】:Owin Odata Web API Self Host 406 ErrorOwin Odata Web API 自主机 406 错误
【发布时间】:2015-12-05 02:45:06
【问题描述】:

我正在尝试创建一个支持 odata 的 owin 自托管 webapi。 我添加了所有依赖项并设置了所有内容,当我调用 get 方法时(只需使用 chrome 浏览它)。 我在 GET 上放置的断点被调用并无异常返回。 但是chrome只是返回一个空白屏幕,在chrome的控制台中没有发现http错误。 当我在 IE10 中执行此操作时(是旧版本,但我不允许更新它)我得到 406(不可接受)。

这是我的 Startup.cs 代码:

  public void Configuration(IAppBuilder appBuilder)
    {
        // Configure Web API for self-host. 
        HttpConfiguration config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        //config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
        //config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/xml"));

        ODataModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Product>("Products");

        config.MapODataServiceRoute(
        routeName: "ODataRoute",
        routePrefix: null,
        model: builder.GetEdmModel());

        appBuilder.UseWebApi(config);
    }

这是我的控制器代码,只是一个简单的 GET。

 public class ProductsController : ODataController
{
    ProductsContext db = new ProductsContext();

    [EnableQuery]
    public IQueryable<Product> Get()
    {
        try
        {
            return db.Products;
        }
        catch (System.Exception ex)
        {
            string x = "y";
            return db.Products;
        }
    }
}

db.Products 目前是一个空表,但这仍应返回一个空数组,对吧?

非常感谢任何帮助! 谢谢。

【问题讨论】:

标签: odata asp.net-web-api owin


【解决方案1】:

感谢范欧阳提供的链接,这帮助我解决了我的问题! 现在我正在使用以下代码:

Owin 启动

        var config = new HttpConfiguration();
        config.MapODataServiceRoute(routeName: "OData", routePrefix: "odata", model: GetEdmModel());
        appBuilder.UseWebApi(config);

GetEdmModel 函数

    private IEdmModel GetEdmModel()
    {
        var modelBuilder = new ODataConventionModelBuilder();
        modelBuilder.EntitySet<Customer>("Customers");
        return modelBuilder.GetEdmModel();
    }

控制器获取

   public PageResult<Customer> Get(ODataQueryOptions<Customer> queryOptions)
    {
        IQueryable results = queryOptions.ApplyTo(CustomerList.AsQueryable());
        return new PageResult<Customer>(results as IEnumerable<Customer>, Request.ODataProperties().NextLink, CustomerList.Count);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2023-04-11
    • 2015-11-11
    • 2018-02-02
    • 1970-01-01
    • 2014-03-28
    相关资源
    最近更新 更多