asp.net-mvc - Structuremap 没有为此对象定义无参数构造函数

标签 asp.net-mvc asp.net-mvc-4 structuremap

我是 StructureMap 的新手,一段时间以来我一直在尝试修复该错误。
只是无法弄清楚如何解决它以及我哪里做错了。
我什至建立了一个模板 MVC4 站点,其中没有任何内容,但仍然出现该错误。

有人可以帮我吗?

public static class IoC {
    public static IContainer Initialize() {
        ObjectFactory.Initialize(x =>
                    {
                        x.Scan(scan =>
                                {
                                    scan.TheCallingAssembly();
                                    scan.WithDefaultConventions();
                                });

                        x.For<IDbSession>().Use(() => MvcApplication.DbSession);
                        x.For<IDbService>().Use<DbService>();
                    });
        return ObjectFactory.Container;
    }
}
public class HomeController : Controller
{
    protected readonly IDbService _dbService;

    public HomeController(IDbService dbService)
    {
        _dbService = dbService;
    }

    ...
}
public interface IDbSession : IDisposable
{
    void Commit();
    void Rollback();
}
public interface IDbService
{
    StudentsService Students { get; }
    CoursesService Courses { get; }
    ...
}
public class DbService : IDbService
{
    private readonly IDbSession _dbSession;        

    public StudentsService Students { get; }
    public CoursesService Courses { get; }
    ...

    public DbService(IDbSession dbSession)
    {
        _dbSession = dbSession;
    }
}
public class MvcApplication : System.Web.HttpApplication
    {
        private static readonly string _connectionString;
        private static readonly IDbSessionFactory _dbSessionFactory;

        public static IDbSession DbSession
        {
            get { return (IDbSession)HttpContext.Current.Items["Current.DbSession"]; }
            private set { HttpContext.Current.Items["Current.DbSession"] = value; }
        }

        static MvcApplication()
        {
            _connectionString= ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            _dbSessionFactory = new DbSessionFactory(_connectionString);
        }

        protected MvcApplication()
        {
            BeginRequest += delegate
            {
                DbSession = _dbSessionFactory.Create();
            };

            EndRequest += delegate
            {
                if (DbSession != null)
                    DbSession.Dispose();
            };
        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
    }

最佳答案

您必须配置依赖解析器来处理 Controller 构造函数中的参数。你可以在这里找到方法:http://ardalis.com/How-Do-I-Use-StructureMap-with-ASP.NET-MVC-3

关于asp.net-mvc - Structuremap 没有为此对象定义无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651635/

相关文章:

asp.net - 负载平衡 Web 服务器上的 Orchard CMS

asp.net-mvc - 使用 HomeController 的隐式自绑定(bind)激活 HomeController 时出错 - NInject 错误

asp.net-mvc - asp.net mvc keep object alive, 信息

c# - 如何在 Asp.Net Core 中设置日期绑定(bind)的文化?

asp.net-mvc - 如何构建、分区和构建大型 MVC 应用程序以进行小增量部署?

c# - EntityFramework 5.0 中的基类/实体

javascript - ajax 后调用未刷新 MVC 中的 Controller View

multithreading - StructureMap:多线程环境。没有为 PluginFamily 定义默认实例

structuremap - 配置 structuremap 以使用工厂类创建实例

session - ravendb 长时间运行的 session