C# 防止简单喷油器与Umbraco控制器冲突
尽管在我的Umbraco解决方案中只重新设置了我自己的mvc控制器,但简单的注入器似乎也会影响Umbraco的后台控制器。如果我运行下面的代码段,Umbraco backoffice控制器将出现异常,类似于中的问题 我是否也需要添加自定义控制器激活器之类的东西C# 防止简单喷油器与Umbraco控制器冲突,c#,umbraco,simple-injector,C#,Umbraco,Simple Injector,尽管在我的Umbraco解决方案中只重新设置了我自己的mvc控制器,但简单的注入器似乎也会影响Umbraco的后台控制器。如果我运行下面的代码段,Umbraco backoffice控制器将出现异常,类似于中的问题 我是否也需要添加自定义控制器激活器之类的东西 protected void Application_Start(object sender, EventArgs e) { var container = new Container(); container.Opti
protected void Application_Start(object sender, EventArgs e) {
var container = new Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
var registeredControllerTypes =
SimpleInjectorMvcExtensions.GetControllerTypesToRegister(
container, Assembly.GetExecutingAssembly())
.Where(type => type.IsSubClassOf(typeof(MyController)));
foreach (var controllerType in registeredControllerTypes)
{
container.Register(controllerType, controllerType, Lifestyle.Transient);
}
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
}
通过更新版本的@Steven评论解决:
public class UmbracoConstructorBehavior : IConstructorResolutionBehavior
{
public IConstructorResolutionBehavior DefaultBehavior { get; set; }
public ConstructorInfo GetConstructor(Type implementationType)
{
return implementationType.Namespace != null
&& implementationType.Namespace.Contains("Umbraco")
? GetUmbracoConstructor(implementationType)
: DefaultBehavior.GetConstructor(implementationType);
}
private ConstructorInfo GetUmbracoConstructor(Type i) =>
i.GetConstructors().OrderBy(c => c.GetParameters().Length).FirstOrDefault()
?? DefaultBehavior.GetConstructor(i);
}
相关:可能是解决方案:如果这没有帮助,请发布完整的异常详细信息(堆栈跟踪、消息、异常类型和所有内部异常)。@Steven我在线程中对您的建议做了一些修改,因为接口方法签名已更改。这是一种有效的方法吗?是的,似乎是合法的。这也是为我做的