我使用MVC设置dryIoc,因为它是一个mvc应用程序,但我最近刚刚为项目添加了一个API控制器。当我调用API控制器时出错。 MVC控制器工作正常
尝试创建“xxxController”类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。“
答案 0 :(得分:0)
此错误不是来自DryIoc,而是来自ASP.NET,后者尝试在DryIoc失败后实例化控制器。
要查找DryIoc失败的原因,请将可选参数添加到container.WithMvc()
方法(如果您使用的是DryIoc.Mvc扩展名):
var mvcContainer = container.WithMvc(
throwIfUnresolved: type => true); // throws DryIoc exc. for any unresolved type
希望实际的异常有助于修复问题。
答案 1 :(得分:0)
这是我发现的。 在我的StartUp.cs中,我有以下代码
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
IContainer container = new Container(rules => rules.WithTrackingDisposableTransients());
RegisterServices(container);
container = container.WithMvc();
ConfigureAuth(app);
}
public static void RegisterServices(IRegistrator registrator)
{
registrator.Register(typeof(IxxxRepository), typeof(xxxRepository), Reuse.Singleton);
}
}
在我的WebApiConfig.cs
中 var c = new Container()
.WithWebApi(config, throwIfUnresolved: type => type.IsController());
c.Register(typeof(IxxxRepository), typeof(xxxRepository), Reuse.Singleton);
两个控制器(MVC和API)现在都正常工作。但我不确定这是否正确。因为现在我需要为两个容器的每个实例注册存储库。