使用Autofac在Web API 2 AccountController中注入ISecureDataFormat

时间:2015-10-20 18:53:07

标签: asp.net dependency-injection asp.net-web-api2 autofac asp.net-identity-2

我在Web API 2项目中使用ASP.NET Identity 2.2,但我不确定如何使用 Autofac 连接ISecureDataFormat<AuthenticationTicket>的{​​{1}}依赖关系。

我试过了:

AccountController

并收到错误:

  

类型&#39; Microsoft.Owin.Security.ISecureDataFormat`1 [Microsoft.Owin.Security.Authenticat ionTicket]&#39;不能分配给服务&#39; Microsoft.Owin.Security.DataHandler.TicketDataFormat&#39;

我遇到的所有问题似乎都无法使用最新的ASP.NET身份稳定版本。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

你必须做对面。使用 Autofac ,您可以将类型注册为服务。

builder.RegisterType<TicketDataFo‌​rmat>()
       .As<ISecureDataFormat<AuthenticationTicket>>(); 

并且基于this answer,您似乎还需要注册IDataSerializer<AuthenticationTicket>IDataProtector实施。

builder.RegisterType<TicketSerializer>()
       .As<IDataSerializer<AuthenticationTicket>>();
builder.Register(c => new DpapiDataProtectionProvider().Create("ASP.NET Identity"))
       .As<IDataProtector>();