我非常喜欢IOC和web-api 2,但是我已经将结构地图用于web-api中我自己的控制器2.我没有管理过的是使用个人账户在AccountController上使用StructureMap。我使用AccountController开箱即用,到目前为止我所管理的是:
在Ioc.cs中,我添加了以下内容(由于错误)
x.For<IUserStore<ApplicationUser>>().Use<UserStore<ApplicationUser>>();
x.For<DbContext>().Use(() => new ApplicationDbContext());
x.For<ISecureDataFormat<AuthenticationTicket>()
.Use<SecureDataFormat<AuthenticationTicket>>();
但现在我陷入了这个错误:
&#34;没有注册默认实例,无法自动确定类型IDataSerializer&lt; AuthenticationTicket&gt;&#34;
我真的不知道该怎么做。我试图找到一个IDataSerializer的详细实例,但没有运气。
顺便说一句......我已经安装了Nuget包&#34; Structuremap.webapi2&#34;
答案 0 :(得分:8)
解决了!
将此配置添加到IoC.cs或DefaultRegistry:
For<ISecureDataFormat<AuthenticationTicket>>().Use<SecureDataFormat<AuthenticationTicket>>();
For<IDataSerializer<AuthenticationTicket>>().Use<TicketSerializer>();
For<IDataProtector>().Use(() => new DpapiDataProtectionProvider().Create("ASP.NET Identity"));
For<ITextEncoder>().Use<Base64UrlTextEncoder>();
For<Microsoft.AspNet.Identity.IUserStore<ApplicationUser>>().Use<Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>>();
For<System.Data.Entity.DbContext>().Use(() => new ApplicationDbContext());