Browse Source

Resolved#6297: Require ExposeServicesAttribute to remove the duplicated controller from the application model.

pull/6322/head
Halil İbrahim Kalkan 5 years ago
parent
commit
be29aece07
  1. 9
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcOptions.cs
  2. 11
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/AbpServiceConvention.cs

9
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcOptions.cs

@ -1,4 +1,6 @@
using Volo.Abp.AspNetCore.Mvc.Conventions;
using System;
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.Conventions;
namespace Volo.Abp.AspNetCore.Mvc
{
@ -8,9 +10,12 @@ namespace Volo.Abp.AspNetCore.Mvc
public AbpConventionalControllerOptions ConventionalControllers { get; }
public HashSet<Type> IgnoredControllersOnModelExclusion { get; }
public AbpAspNetCoreMvcOptions()
{
ConventionalControllers = new AbpConventionalControllerOptions();
IgnoredControllersOnModelExclusion = new HashSet<Type>();
}
}
}
}

11
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/AbpServiceConvention.cs

@ -77,10 +77,21 @@ namespace Volo.Abp.AspNetCore.Mvc.Conventions
foreach (var controllerModel in application.Controllers)
{
if (!controllerModel.ControllerType.IsDefined(typeof(ExposeServicesAttribute), false))
{
continue;
}
if (Options.IgnoredControllersOnModelExclusion.Contains(controllerModel.ControllerType))
{
continue;
}
var baseControllerTypes = controllerModel.ControllerType
.GetBaseClasses(typeof(Controller), includeObject: false)
.Where(t => !t.IsAbstract)
.ToArray();
if (baseControllerTypes.Length > 0)
{
derivedControllerModels.Add(controllerModel);

Loading…
Cancel
Save