我添加了两个路由。其中一条包含动态前缀。
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:44326xyz)。 它也会返回元数据。
第二条路径的目的是为了从特定的上下文中获取实体。例如: https:/localhost:44326ac2db7f3-7581-4e6a-afa0-c4548d6ae89a产品。 所以,上下文前缀应该只有Guid类型。但我不想显示元数据的 https:/localhost:44326xyz)。 请求。那么如何解决这个问题呢?
我在路由中添加了自定义约定,并忽略了像这样显示元数据。
conventionsWithContextTokenPrefix.Except(conventionsWithContextTokenPrefix.OfType<MetadataRoutingConvention>())