c# – Autofac随机无参数公共构造函数.错误
发布时间:2020-12-16 02:02:35 所属栏目:百科 来源:网络整理
导读:我有一个MVC / WebApi应用程序.我开始使用Autofac来解决这个问题. Autofac工作.但是,随机我会收到错误: 尝试创建“SomeController”类型的控制器时发生错误.确保控制器具有无参数的公共构造函数. 当我清理解决方案并重建时.没有更多的错误.我以为这是我的Vi
我有一个MVC / WebApi应用程序.我开始使用Autofac来解决这个问题.
Autofac工作.但是,随机我会收到错误: 尝试创建“SomeController”类型的控制器时发生错误.确保控制器具有无参数的公共构造函数. 当我清理解决方案并重建时.没有更多的错误.我以为这是我的Visual Studio实例(可能需要运行修复).但是,我只是尝试发布到IIS,我再次收到错误. 有没有人遇到过这个问题,能有人帮帮我吗? 这是一些代码细节: 我所有的注册都是在这样的模块中完成的: public class CryptographyModule : Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<AesCryptographyService>() .As<IAesCryptographyService>() .InstancePerRequest(); } } 我正在使用它来引导Autofac: public static class Bootstrapper { public static void Run() { BootStrapAutofac(); } private static void BootStrapAutofac() { var builder = new ContainerBuilder(); var localAssemblies = GetLocalAssemblies(); builder.RegisterApiControllers(localAssemblies); builder.RegisterControllers(localAssemblies); builder.RegisterAssemblyModules(localAssemblies); //build container var container = builder.Build(); var webApiResolver = new AutofacWebApiDependencyResolver(container); GlobalConfiguration.Configuration.DependencyResolver = webApiResolver; var mvcResolver = new AutofacDependencyResolver(container); DependencyResolver.SetResolver(mvcResolver); } private static Assembly[] GetLocalAssemblies() { return AppDomain.CurrentDomain.GetAssemblies() .Where(a => a.GetName().Name.StartsWith("Loc")) .ToArray(); } } 解决方法
我有这样的问题.我的问题是我没有设置DependencyResolver.SetResolver();和GlobalConfiguration.Configuration.DependencyResolver在应用程序入口点(Global.asax,Application_Start).所以ASP.NET无法在我的控制器中解析我的依赖项,然后我得到了同样的异常.
在应用程序启动的第一时间设置依赖项解析器,解决了我的问题. 在您的情况下,正如您所说清理和重建解决方案的工作原理,可能问题是如何让程序集在Autofac中注册.在调用GetLocalAssemblies时,请尝试记录正在注册的每个程序集,并查看是否正在注册具有控制器的程序集和具有依赖项的程序集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |