我有一个使用 ASP.NET MVC 4、WebAPI 和其他一些组件构建的分层 Web 应用程序。我使用最新版本的 Autofac 2.6.2.859 作为我的 DI 容器以及 MVC 和 WebAPI 集成。我在不同的层中设置了 autofac 模块,并且正在使用新的 RegisterAssemblyModules 来扫描 AppDomain 程序集以查找各种模块。
在启动时,一切都很好。当我编辑 web.config 文件并且应用程序预热时,我的注册丢失了。我得到一个 DependencyResolutionException -
在“My.Class.Name”类型上使用“公共绑定标志”找到的任何构造函数都不能使用可用的服务和参数调用:
所以我的注册没有被重新加载。有谁知道如何解决这个问题?我应该将初始化代码放在 Application_Start() 以外的其他地方吗?
更新
这是我的代码的样子
public static class IoC
{
public static void Configure()
{
var builder = new ContainerBuilder();
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
//Assembly Modules
builder.RegisterAssemblyModules<NSUTriviaModuleBase>(assemblies);
// Register API controllers using assembly scanning.
builder.RegisterControllers(assemblies);
// Register API controllers using assembly scanning.
builder.RegisterApiControllers(assemblies);
var container = builder.Build();
// Set the dependency resolver implementation.
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}