Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以为ASPNET.Core OData声明多个路由_C#_Rest_Asp.net Core_Odata - Fatal编程技术网

C# 是否可以为ASPNET.Core OData声明多个路由

C# 是否可以为ASPNET.Core OData声明多个路由,c#,rest,asp.net-core,odata,C#,Rest,Asp.net Core,Odata,我正在使用Microsoft.AspNetCore.OData 7.0.0 nuget包 我已经注册了我的OData路由前缀,如下所示 app.UseMvc(routeBuilder => { var builder = new ModelODataBuilder(); routeBuilder.EnableDependencyInjection(); routeBuilder.MapODataServiceRoute("ODataRoutes", "odata/R

我正在使用Microsoft.AspNetCore.OData 7.0.0 nuget包

我已经注册了我的OData路由前缀,如下所示

app.UseMvc(routeBuilder =>
{
    var builder = new ModelODataBuilder();
    routeBuilder.EnableDependencyInjection();
    routeBuilder.MapODataServiceRoute("ODataRoutes", "odata/Route1", builder.GetEdmModel(app.ApplicationServices));
});
每个OData控制器都有一个ODataRoutePrefix,其中该前缀对应于在GetEdmModel中声明和配置的EntitySet。比如说

[ODataRoutePrefix(“Service1”)]

但是,我需要一些服务具有路由前缀“odata/Route1”,而其他服务具有“odata/Route2”。比如说

我不知道如何配置这个。以下代码不起作用

app.UseMvc(routeBuilder =>
{
    var builder = new ModelODataBuilder();
    routeBuilder.EnableDependencyInjection();
    routeBuilder.MapODataServiceRoute("ODataRoute1", "odata/Route1", builder.GetEdmModelForRoute1(app.ApplicationServices));

    routeBuilder.MapODataServiceRoute("ODataRoute2", "odata/Route1", builder.GetEdmModelForRoute2(app.ApplicationServices));
});
有人知道我将如何配置它吗?

我想我找到了一种方法

在my Startup.cs中添加了一个额外的app.UseMvc

app.UseMvc( b =>
        {
            b.Select( ).Expand( ).Filter( ).OrderBy( ).MaxTop( 100 ).Count( );
            b.MapODataServiceRoute( "odata" , "odata" , EdmModelBuilder.GetEdmModel( app.ApplicationServices ) );
        } );
        app.UseMvc( b =>
        {
            b.Select( ).Expand( ).Filter( ).OrderBy( ).MaxTop( 100 ).Count( );
            b.MapODataServiceRoute( "membership" , "membershipapi" , EdmModelBuilderMembership.GetEdmModel( app.ApplicationServices ) );
        } );
到目前为止它一直在工作

您还必须更改代码,以便在两个映射中不使用相同的路径:“odata/Route1”