gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:42 24 4
gpt4 key购买 nike

我正在使用 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 Controller 都有一个 ODataRoutePrefix,其中前缀对应于在 GetEdmModel 中声明和配置的 EntitySet。例如

[ODataRoutePrefix("Service1")]

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

http://odata/Route1/Service1 http://odata/Route2/Service2

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

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));
});

有谁知道我将如何配置它?

最佳答案

我想我找到了一个方法。

在我的 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”

关于c# - 是否可以为 ASPNET.Core OData 声明多个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51490177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com