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(); }}@H_301_32@解决方法 我有这样的问题.我的问题是我没有设置DependencyResolver.SetResolver();和GlobalConfiguration.Configuration.DependencyResolver在应用程序入口点(Global.asax,Application_Start).所以ASP.NET无法在我的控制器中解析我的依赖项,然后我得到了同样的异常.
在应用程序启动的第一时间设置依赖项解析器,解决了我的问题.
在您的情况下,正如您所说清理和重建解决方案的工作原理,可能问题是如何让程序集在autofac中注册.在调用GetLocalAssemblIEs时,请尝试记录正在注册的每个程序集,并查看是否正在注册具有控制器的程序集和具有依赖项的程序集.
总结以上是内存溢出为你收集整理的c# – Autofac随机无参数公共构造函数.错误全部内容,希望文章能够帮你解决c# – Autofac随机无参数公共构造函数.错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)