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

Is it possible to expose multiple Odata v4 endpoints in Asp.Net WebApi project

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

类似于:

因为我需要将功能分成多个组件。 谁能帮帮我?

更新

目前我正在使用以下代码来创建和公开 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();
}

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

下面一行应该是你关心的:

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

第二个字符串参数是 routePrefix,这意味着您当前可能正在访问 http://yourhost.com/Odata/$metadata. If you simply create another mapping with a different prefix value (e.g. Odata2) you'd be able to make calls against http://yourhost.com/Odata/$metadata AND http://yourhost.com/Odata2/$ 元数据。您可能还想给它们一个唯一的 routeName(第一个字符串参数),并且您可能还想提供一个不同的模型,因此这两个服务实际上是不同的 :).