0

Web Api ODataコントローラーを作成して直接表示しようとしましたが、機能しません。

WebApiConfig構成

 public static void Register(HttpConfiguration config)
    {
      config.Routes.MapODataRoute("odata", "odata", GetEdmModel());
      config.Routes.MapHttpRoute(
          name: "DefaultApi",
          routeTemplate: "api/{controller}/{id}",
          defaults: new { id = RouteParameter.Optional }
      );
    }

    public static IEdmModel GetEdmModel()
    {
      ODataModelBuilder builder = new ODataConventionModelBuilder();
      builder.EntitySet<Customer>("Customers");
      builder.Namespace = "PackageManager.Models";
      return builder.GetEdmModel();
    }

アプリで登録の呼び出しを開始します。

WebApiConfig.Register(GlobalConfiguration.Configuration);

APIコントローラー:

public class CustomersController : EntitySetController<Customer, string>
  {
    NorthwindDbContext _Context = new NorthwindDbContext();

    [Queryable]
    public override IQueryable<Customer> Get()
    {
      return _Context.Customers;
    }

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

アクセスしてみてください:localhost:2375 / odata / Customers

その後、常にエラーが発生します:

リソースが見つかりません。

4

2 に答える 2

-1

@Parwej - コードの代わりに webapi.config に以下のコードを書いてみてください。また、Odata URL では大文字と小文字が区別されるため、URL で適切な大文字と小文字が使用されていることを確認してください。また、コントローラーで System.Web.Odata の代わりに System.Web.Http.OData を使用することを忘れないでください。これはうまくいくはずです。

public static void Register(HttpConfiguration config)
{
  ODataModelBuilder builder = new ODataConventionModelBuilder();
  builder.EntitySet<Customer>("Customers");
  config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
}
于 2015-06-11T07:36:30.503 に答える