是否可以在Asp.Net WebApi项目中公开多个Odata v4端点

时间:2017-05-14 16:24:57

标签: c# asp.net asp.net-web-api odata odata-v4

标题解释了要求。 是否可以在单个项目中公开多个端点?

类似的东西:

因为我需要将功能划分为多个组件。 任何人都可以帮助我吗?

更新

目前,我正在使用以下代码创建和展示Odata服务。

public void Configuration(IAppBuilder app)
{
   HttpConfiguration config = new HttpConfiguration();
   ConfigureRoute(config);
   ConfigureGlobalFilters(config);

   HttpServer server = new HttpServer();
   ODataBatchHandler batchHandler = new DefaultODataBatchHandler(server);
   config.MapODataServiceRoute("Odata", "Odata", GenerateEdmModel(), batchHandler);


   ...

   config.EnsureInitialized();
}

private IEdmModel GenerateEdmModel()
{
   ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
   builder.Namespace = "ServiceA";
   builder.ContainerName = "DefaultContainer";

   builder.EntitySet<Permission>("ApplicationPermissions");

   return builder.GetEdmModel();
}

我想为每个组件公开单独的服务(在不同的名称空间下?)。

1 个答案:

答案 0 :(得分:2)

以下一行应该是你关心的那一行:

config.MapODataServiceRoute("Odata", "Odata", GenerateEdmModel(), batchHandler);

第二个字符串参数是routePrefix,这意味着您当前可能正在点击http://yourhost.com/Odata/ $元数据。如果您只是使用不同的前缀值(例如Odata2)创建另一个映射,则可以对http://yourhost.com/Odata/ $元数据和http://yourhost.com/Odata2/ $元数据进行调用。你可能也希望给它们一个唯一的routeName(第一个字符串参数),你可能也想提供一个不同的模型,所以这两个服务实际上会有所不同:)。