如何禁用仅获取路由 OData 中的元数据
How to disable getting only meta data in route OData
我添加了两条路线。其中之一包含动态前缀:
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<UOM>();
var entityType = builder.EntityType<Product>();
builder.EntitySet<Product>("Products");
builder.EntitySet<UOM>("UOMs");
var model = builder.GetEdmModel();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: model);
config.MapODataServiceRoute(
routeName: "ODataRouteWithContext",
routePrefix: "{context}/",
model: model);
现在,当我发送 https://localhost:44326/ 时,我将获得元数据:
但是当我尝试 https://localhost:44326/xyz 之类的东西时,它也会 return 元数据。
第二条路线的目的是从特定上下文中获取实体。例如,https://localhost:44326/ac2db7f3-7581-4e6a-afa0-c4548d6ae89a/Products
因此,上下文前缀应该只是 Guid 类型。但我不想显示 https://localhost:44326/xyz 请求的元数据。那么我该如何解决这个问题呢?
我在路由中添加了自定义约定并忽略了显示元数据,如下所示:
conventionsWithContextTokenPrefix.Except(conventionsWithContextTokenPrefix.OfType<MetadataRoutingConvention>())
我添加了两条路线。其中之一包含动态前缀:
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<UOM>();
var entityType = builder.EntityType<Product>();
builder.EntitySet<Product>("Products");
builder.EntitySet<UOM>("UOMs");
var model = builder.GetEdmModel();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: model);
config.MapODataServiceRoute(
routeName: "ODataRouteWithContext",
routePrefix: "{context}/",
model: model);
现在,当我发送 https://localhost:44326/ 时,我将获得元数据:
但是当我尝试 https://localhost:44326/xyz 之类的东西时,它也会 return 元数据。
第二条路线的目的是从特定上下文中获取实体。例如,https://localhost:44326/ac2db7f3-7581-4e6a-afa0-c4548d6ae89a/Products 因此,上下文前缀应该只是 Guid 类型。但我不想显示 https://localhost:44326/xyz 请求的元数据。那么我该如何解决这个问题呢?
我在路由中添加了自定义约定并忽略了显示元数据,如下所示:
conventionsWithContextTokenPrefix.Except(conventionsWithContextTokenPrefix.OfType<MetadataRoutingConvention>())