我有一个MVC / WebApi应用程序.我开始使用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时,请尝试记录正在注册的每个程序集,并查看是否正在注册具有控制器的程序集和具有依赖项的程序集.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。