【问题标题】:OData gives result only after making a web API requestOData 仅在发出 Web API 请求后才给出结果
【发布时间】:2016-02-25 02:27:55
【问题描述】:

我在 web Api 2 中创建了一个 Odata

我正在添加类似

的路线
config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "odata",
            model: GetModel()
        );

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        ); 

我得到了一个奇怪的结果。

如果我首先点击 OData 服务(在构建/发布之后),它会显示下图。

但如果我先发出 api 请求,然后再发出 OData 请求,

然后我得到了预期的 JSON。

简而言之,OData 请求仅在发出 API 请求后才有效。

谁能说出这种行为的原因是什么?

【问题讨论】:

    标签: odata asp.net-web-api2


    【解决方案1】:

    Order matters。尝试在 Web API 配置之后移动 OData 配置:

    config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        ); 
    
    config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "odata",
            model: GetModel()
        );
    

    如果您没有任何常规 Web API 控制器,请完全消除对 MapHttpRoute 的调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2017-04-30
      • 1970-01-01
      • 2018-06-07
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多