routes - 如何禁用在路由 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这样的东西时,它也会返回元数据。
第二条路线的目的是从特定的上下文中获取实体。例如https://localhost:44326/ac2db7f3-7581-4e6a-afa0-c4548d6ae89a/Products 所以,上下文前缀只能是 Guid 类型。但我不想显示https://localhost:44326/xyz请求的元数据。那么我该如何解决这个问题呢?
解决方案
我在路由中添加了自定义约定并忽略了显示如下元数据:
conventionsWithContextTokenPrefix.Except(conventionsWithContextTokenPrefix.OfType<MetadataRoutingConvention>())
推荐阅读
- javascript - 使用 TypeScript 的函数名称的 ESlint 规则(camelCase 首字母小写)
- wcf-data-services - WCF 数据服务和 url 参数
- swift - 如何在 NSTableView 中的行之间添加空格
- python - 为什么计算时差会返回错误
- javascript - 如何获取文本区域中的复选框数据和范围内的文本区域数据?
- reactjs - 如何在 Firebase 数据库中正确存储/检索数据
- firebase - 带有 MIcrosoft Graph (accessToken) 的 firebase 身份验证
- django - 如何将模板标签从普通 django 转换为一个 django-hosts 使用
- php - Laravel eloquent 插入具有多重关系的数据
- c# - 如何在 vs 2019 和 .net core 3 的最新预览版中解决 blazor 中的路由问题?