public static IEndpointConventionBuilder MapRazorPages( this IEndpointRouteBuilder routeBuilder, string basePath = null) { var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault(); if (mvcEndpointDataSource == null) { mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>(); routeBuilder.DataSources.Add(mvcEndpointDataSource); } var conventionBuilder = new DefaultEndpointConventionBuilder(); mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor => { if (actionDescriptor is PageActionDescriptor pageActionDescriptor) { // TODO: Filter pages by path return(conventionBuilder); } return(null); }); return(conventionBuilder); }
public static IEndpointConventionBuilder MapMvcControllers <TController>( this IEndpointRouteBuilder routeBuilder) where TController : ControllerBase { var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault(); if (mvcEndpointDataSource == null) { mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>(); routeBuilder.DataSources.Add(mvcEndpointDataSource); } var conventionBuilder = new DefaultEndpointConventionBuilder(); mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor => { if (actionDescriptor is ControllerActionDescriptor controllerActionDescriptor && typeof(TController).IsAssignableFrom(controllerActionDescriptor.ControllerTypeInfo)) { return(conventionBuilder); } return(null); }); return(conventionBuilder); }
private TestEndpointConventionBuilder CreateBuilder() { var conventionBuilder = new DefaultEndpointConventionBuilder(new RouteEndpointBuilder( TestConstants.EmptyRequestDelegate, RoutePatternFactory.Parse("/test"), order: 0)); return(new TestEndpointConventionBuilder(conventionBuilder)); }
private static IEndpointConventionBuilder MapActionDescriptors( this IEndpointRouteBuilder routeBuilder, Type containingType) { var mvcEndpointDataSource = routeBuilder.DataSources.OfType <MvcEndpointDataSource>().FirstOrDefault(); if (mvcEndpointDataSource == null) { mvcEndpointDataSource = routeBuilder.ServiceProvider.GetRequiredService <MvcEndpointDataSource>(); routeBuilder.DataSources.Add(mvcEndpointDataSource); } var conventionBuilder = new DefaultEndpointConventionBuilder(); var assemblyFilter = containingType?.Assembly; mvcEndpointDataSource.AttributeRoutingConventionResolvers.Add(actionDescriptor => { // Filter a descriptor by the assembly // Note that this will only filter actions on controllers // Does not support filtering Razor pages embedded in assemblies if (assemblyFilter != null) { if (actionDescriptor is ControllerActionDescriptor controllerActionDescriptor) { if (controllerActionDescriptor.ControllerTypeInfo.Assembly != assemblyFilter) { return(null); } } } return(conventionBuilder); }); return(conventionBuilder); }
public TestEndpointConventionBuilder(DefaultEndpointConventionBuilder endpointConventionBuilder) { _endpointConventionBuilder = endpointConventionBuilder; }