【发布时间】:2013-12-18 09:22:03
【问题描述】:
我刚刚开始尝试使用 Web Api 2 和 StructureMap,并安装了 StructureMap.MVC4 Nuget 包。在我尝试注册用户之前,一切似乎都运行良好。当 IHttpControllerActivator 的这个实现试图实例化一个控制器时,我得到了这个错误:
public class ServiceActivator : IHttpControllerActivator
{
public ServiceActivator(HttpConfiguration configuration) { }
public IHttpController Create(HttpRequestMessage request
, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var controller = ObjectFactory.GetInstance(controllerType) as IHttpController;
return controller;
}
}
我得到的错误是:
StructureMap Exception Code: 202
No Default Instance defined for PluginFamily Microsoft.AspNet.Identity.IUserStore`1[[Microsoft.AspNet.Identity.EntityFramework.IdentityUser, Microsoft.AspNet.Identity.EntityFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.AspNet.Identity.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
我了解错误是什么,但不完全确定如何解决。假设 StructureMap 中的默认扫描仪找不到 IUserStore 的默认实现是否正确?这是我使用的初始化代码:
ObjectFactory.Initialize(x => x.Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory();
scan.WithDefaultConventions();
}));
有什么想法吗?谢谢。
编辑: 我想我可能已经用这个解决了最初的问题:
x.For<Microsoft.AspNet.Identity.IUserStore<IdentityUser>>()
.Use<UserStore<IdentityUser>>();
但是现在有另一个默认实例 StructureMap 无法解决 - dbcontext。这是我收到的下一条错误消息:
ExceptionMessage=StructureMap Exception Code: 202
No Default Instance defined for PluginFamily System.Data.Entity.DbContext, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
现在我真的迷路了……
【问题讨论】:
标签: dependency-injection asp.net-web-api structuremap basic-authentication