c# – Autofac随机无参数公共构造函数.错误

c# – Autofac随机无参数公共构造函数.错误,第1张

概述我有一个MVC / WebApi应用程序.我开始使用Autofac来解决这个问题. Autofac工作.但是,随机我会收到错误: 尝试创建“SomeController”类型的控制器时发生错误.确保控制器具有无参数的公共构造函数. 当我清理解决方案并重建时.没有更多的错误.我以为这是我的Visual Studio实例(可能需要运行修复).但是,我只是尝试发布到IIS,我再次收到错误. 有没有人遇到 我有一个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();    }}
@H_301_32@解决方法 我有这样的问题.我的问题是我没有设置DependencyResolver.SetResolver();和GlobalConfiguration.Configuration.DependencyResolver在应用程序入口点(Global.asax,Application_Start).所以ASP.NET无法在我的控制器中解析我的依赖项,然后我得到了同样的异常.

在应用程序启动的第一时间设置依赖项解析器,解决了我的问题.

在您的情况下,正如您所说清理和重建解决方案的工作原理,可能问题是如何让程序集在autofac中注册.在调用GetLocalAssemblIEs时,请尝试记录正在注册的每个程序集,并查看是否正在注册具有控制器的程序集和具有依赖项的程序集.

总结

以上是内存溢出为你收集整理的c# – Autofac随机无参数公共构造函数.错误全部内容,希望文章能够帮你解决c# – Autofac随机无参数公共构造函数.错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1219178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存