结构图Web Api 2帐户控制器和个人帐户

时间:2014-05-30 20:05:05

标签: c# structuremap owin asp.net-web-api2

我非常喜欢IOC和web-api 2,但是我已经将结构地图用于web-api中我自己的控制器2.我没有管理过的是使用个人账户在AccountController上使用StructureMap。我使用AccountController开箱即用,到目前为止我所管理的是:

  1. 在Ioc.cs中,我添加了以下内容(由于错误)

      x.For<IUserStore<ApplicationUser>>().Use<UserStore<ApplicationUser>>();
      x.For<DbContext>().Use(() => new ApplicationDbContext());
      x.For<ISecureDataFormat<AuthenticationTicket>()
           .Use<SecureDataFormat<AuthenticationTicket>>();
    
  2. 但现在我陷入了这个错误:

    &#34;没有注册默认实例,无法自动确定类型IDataSerializer&lt; AuthenticationTicket&gt;&#34;

    我真的不知道该怎么做。我试图找到一个IDataSerializer的详细实例,但没有运气。

    顺便说一句......我已经安装了Nuget包&#34; Structuremap.webapi2&#34;

1 个答案:

答案 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());