我在Web Api项目中遇到Simple Injector问题.我的用户默认AccountController由VS生成.
public AccountController(ApplicationUserManager userManager,
ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中我注册:
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);
Run Code Online (Sandbox Code Playgroud)
我虽然Simple Injector足够聪明,可以处理所有依赖负责默认身份的构建,我不需要手动注册它们,但如果我不注册它们,我会得到例外.
仍然有例外:
SecureDataFormat类型的构造函数包含ITextEncoder类型的参数,其名称为"encoder",未注册.请确保ITextEncoder已在容器中注册,或更改SecureDataFormat的构造函数.
有没有办法自动处理?
我正在将WebApi2项目迁移到MVC6.由于我们在.NET 4.6.1中编写了其他依赖项,因此我们需要针对相同的版本.
"frameworks": {
"net461": {}}
Run Code Online (Sandbox Code Playgroud)
我添加了依赖项:
"Swashbuckle": "5.3.2",
Run Code Online (Sandbox Code Playgroud)
但问题是没有办法将它连接/注册到ASP.NET Core MVC.
有什么办法吗?