C# StructureMappConfigurationException

C# StructureMappConfigurationException,c#,asp.net,asp.net-mvc,structuremap,C#,Asp.net,Asp.net Mvc,Structuremap,我正在构建ASP.NETMVC4.5。我已将StructureMap添加到我的项目中。我在我的网站和国际奥委会课程中创建了: public static IContainer Initialize() { var connectionString = ConfigurationManager.ConnectionStrings["Ebancomat"].ConnectionString; ObjectFactory.Initialize(x =>

我正在构建ASP.NETMVC4.5。我已将StructureMap添加到我的项目中。我在我的网站和国际奥委会课程中创建了:

public static IContainer Initialize()
    {
        var connectionString = ConfigurationManager.ConnectionStrings["Ebancomat"].ConnectionString;

        ObjectFactory.Initialize(x =>
        {
            x.For<Ebancomat.DataAdapters.IncomeExpenses.IIncomeExpensesDataAdapter>().Use<Ebancomat.DataAdapters.IncomeExpenses.IncomeExpensesDataAdapter>().Ctor<string>("connectionString").Is(connectionString);
            x.For<Ebancomat.Repositories.IncomeExpenses.IIncomeExpensesRepository>().Use<Ebancomat.Repositories.IncomeExpenses.IncomeExpensesRepository>();
        });

        return ObjectFactory.Container;
    }
我已经添加了这不是我的Global.asax.cs:

var container = Ioc.Initialize();
        ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory(container));
当我第一次运行应用程序时,打开了一个窗口,它需要Container.cs。我没有找到那个类,我按下了“取消”,从那以后,我得到了这个错误,我不明白为什么。(我在工作中尝试了相同的代码,但效果非常好)

StructureMap.dll中发生了“StructureMap.StructureMappConfigurationException”类型的异常,但未在用户代码中处理
其他信息:未注册默认实例,无法自动确定“IUserStore”类型的默认实例

它请求Container.cs,因为它是StructureMap中引发异常的类;由于您(我假设)正在引用StructureMap.DLL二进制文件,因此您将没有源代码。我不会担心的

看起来您正在对尚未注册的类型调用
ObjectFactory.GetInstance

您的
ObjectFactory.Initialize
IIncomeExpensesDataAdapter
iincomeexpensesrespository
注册具体类型,但我看不到
IUserStore
IUserStore
的任何内容


您能否在代码中搜索
ObjectFactory.GetInstance
并查看是否有任何地方可以使用它,而无需在StructureMap中注册对象图?

我假设
IUserStore
正在通过构造函数注入进行解析,而SM无法解析它,因为它未在容器中注册。因此,您只需在容器中注册
IUserStore

我也会放弃
ObjectFactory
,转而使用
新容器

public static IContainer Initialize()
{
    var connectionString = ConfigurationManager.ConnectionStrings["Ebancomat"].ConnectionString;

    return new Container(
        c =>
            {
                c.For<Ebancomat.DataAdapters.IncomeExpenses.IIncomeExpensesDataAdapter>()
                    .Use<Ebancomat.DataAdapters.IncomeExpenses.IncomeExpensesDataAdapter>()
                    .Ctor<string>("connectionString")
                    .Is(connectionString);
                c.For<Ebancomat.Repositories.IncomeExpenses.IIncomeExpensesRepository>()
                    .Use<Ebancomat.Repositories.IncomeExpenses.IncomeExpensesRepository>();
                c.For<IUserStore<ApplicationUser>>().Use<DatabaseUserStore>();
        });
}
publicstaticontainer初始化()
{
var connectionString=ConfigurationManager.ConnectionStrings[“Ebancomat”]。connectionString;
退回新货柜(
c=>
{
c、 For()
.Use()
.Ctor(“连接字符串”)
.Is(连接字符串);
c、 For()
.使用();
c、 For().Use();
});
}

我搜索过。不,没有。我试过你的方法,但我有另一个问题;我不知道在哪里可以找到“DatabaseUserStore”来添加数据。@MarianEne这种类型是假的。我使用的是用于此代码段目的。你应该使用你正在使用的那个。
An exception of type 'StructureMap.StructureMapConfigurationException' occurred in StructureMap.dll but was not handled in user code
Additional information: No default Instance is registered and cannot be automatically determined for type 'IUserStore<ApplicationUser>'
public static IContainer Initialize()
{
    var connectionString = ConfigurationManager.ConnectionStrings["Ebancomat"].ConnectionString;

    return new Container(
        c =>
            {
                c.For<Ebancomat.DataAdapters.IncomeExpenses.IIncomeExpensesDataAdapter>()
                    .Use<Ebancomat.DataAdapters.IncomeExpenses.IncomeExpensesDataAdapter>()
                    .Ctor<string>("connectionString")
                    .Is(connectionString);
                c.For<Ebancomat.Repositories.IncomeExpenses.IIncomeExpensesRepository>()
                    .Use<Ebancomat.Repositories.IncomeExpenses.IncomeExpensesRepository>();
                c.For<IUserStore<ApplicationUser>>().Use<DatabaseUserStore>();
        });
}