Я добавил инфраструктуру Unity DI в качестве пакета nuget для своего решения Umbraco.Мой файл конфигурации Unity выглядит следующим образом:
public static class UnityConfig
{
#region Unity Container
private static Lazy<IUnityContainer> container =
new Lazy<IUnityContainer>(() =>
{
var container = new UnityContainer();
RegisterTypes(container);
return container;
});
public static IUnityContainer Container => container.Value;
#endregion
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IHomeViewModelFactory, HomeViewModelFactory>(new PerResolveLifetimeManager());
}
}
Я могу запустить веб-сайт, но как только я пытаюсь получить доступ к бэк-офису Umbraco, я получаю:
Тип UmbracoAuthorizeAttribute имеет несколько конструкторовдлины 1. Невозможно устранить неоднозначность.
В частности, в файле журнала написано:
ERROR Umbraco.Core.UmbracoApplicationBase - An unhandled exception occurred
Unity.Exceptions.ResolutionFailedException: Resolution of the dependency failed, type = 'Umbraco.Web.Mvc.UmbracoAuthorizeAttribute', name = '(none)'.
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type UmbracoAuthorizeAttribute has multiple constructors of length 1. Unable to disambiguate.
-----------------------------------------------
At the time of the exception, the container was:
Resolving Umbraco.Web.Mvc.UmbracoAuthorizeAttribute,(none)
---> System.InvalidOperationException: The type UmbracoAuthorizeAttribute has multiple constructors of length 1. Unable to disambiguate.
at Unity.ObjectBuilder.BuildPlan.Selection.ConstructorSelectorPolicyBase`1.FindLongestConstructor(Type typeToConstruct)
at Unity.ObjectBuilder.BuildPlan.Selection.ConstructorSelectorPolicyBase`1.SelectConstructor(IBuilderContext context, IPolicyList resolverPolicyDestination)
at Unity.ObjectBuilder.BuildPlan.DynamicMethod.Creation.DynamicMethodConstructorStrategy.CreateInstanceBuildupExpression(DynamicBuildPlanGenerationContext buildContext, IBuilderContext context)
Как я могу решить эту проблему?