Asp.net mvc Structuremap未为此对象定义无参数构造函数
我是StructureMap的新手,一段时间以来我一直在尝试修复这个错误。 只是不知道如何修复它,我哪里做错了。 我甚至建立了一个模板MVC4站点,里面什么都没有,但仍然会出错 有人能帮我吗Asp.net mvc Structuremap未为此对象定义无参数构造函数,asp.net-mvc,asp.net-mvc-4,structuremap,Asp.net Mvc,Asp.net Mvc 4,Structuremap,我是StructureMap的新手,一段时间以来我一直在尝试修复这个错误。 只是不知道如何修复它,我哪里做错了。 我甚至建立了一个模板MVC4站点,里面什么都没有,但仍然会出错 有人能帮我吗 public static class IoC { public static IContainer Initialize() { ObjectFactory.Initialize(x => {
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();
}
}