【发布时间】:2015-08-08 01:38:25
【问题描述】:
我的 Web Api 项目中的 Simple Injector 有问题。我使用VS生成的默认AccountController。
public AccountController(ApplicationUserManager userManager,
ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
在我的配置文件中注册:
var container = new Container();
// This is an extension method from the integration package.
container.RegisterWebApiFilterProvider(config);
container.RegisterWebApiControllers(config);
container.Register<IInitializeService, InitializeService>();
container.Register<IFolderRepository, FolderRepository>();
container.Register<IUserRepository, UserRepository>();
container.Register<ILogger, Logger>();
//Authentication Wrap
container.Register<IUserStore<User, Guid>, ApplicationUserStore>();
container.Register<IDataSerializer<AuthenticationTicket>, TicketSerializer>();
container.Register<ISecureDataFormat<AuthenticationTicket>,
SecureDataFormat<AuthenticationTicket>>();
container.Register<IDataProtector>(
() => new DpapiDataProtectionProvider().Create("ASP.NET Identity"));
container.Verify();
// 4. Register the container as MVC3 IDependencyResolver.
DependencyResolver.SetResolver(new SimpleInjectorWebApiDependencyResolver(container));
config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
我虽然 Simple Injector 足够聪明,可以处理所有负责默认身份的内置依赖项,我不需要手动注册它们,但如果我不注册它们,我会遇到异常。
仍然出现异常:
SecureDataFormat 类型的构造函数包含名称为“encoder”的 ITextEncoder 类型的参数,该参数未注册。请确保在容器中注册了 ITextEncoder,或者更改 SecureDataFormat 的构造函数。
有没有办法自动处理?
【问题讨论】:
标签: c# authentication dependency-injection owin simple-injector