C# StructureMappConfigurationException
我正在构建ASP.NETMVC4.5。我已将StructureMap添加到我的项目中。我在我的网站和国际奥委会课程中创建了: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 =>
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>();
});
}