Unity Thuộc Tôi đã tải mẫu này trong đó tôi có thể thử các tính năng của nhà cung cấp nhận dạng trong ASP.NET MVC 5:Nhà cung cấp danh và tiêm
http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples
Tôi đã sử dụng nhiều lần Unity DI cho kho của tôi , dịch vụ, đơn vị công việc và các nội dung khác không có sự cố.
Nhưng bây giờ, khi tôi cài đặt Unity DI, tôi gặp nhiều vấn đề với Giao diện và DI sử dụng Nhà cung cấp danh tính.
Tôi vừa tải xuống mã ví dụ và tôi đã định cấu hình Unity DI, nhưng tôi không muốn sử dụng Unity cho Identity Membership, tôi muốn sử dụng Unity DI chỉ dành cho tôi (IRepository, IService, IUnitOfWork, vv)
tôi có lỗi này khi tôi cố gắng đăng ký một user:
Các loại hiện nay, Microsoft.AspNet.Identity.IUserStore`1 [Ecoavantis.Interactive.GCI.Models. ApplicationUser], là một giao diện và không thể được xây dựng. Bạn có thiếu kiểu ánh xạ không?
Tôi đọc một số bài trong đó họ nói rằng tôi phải bao gồm một cái gì đó như thế này, nhưng tôi không cần phải tiêm phụ thuộc vào nhà cung cấp nhận dạng ...
container.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new HierarchicalLifetimeManager());
bất cứ ai có thể giúp tôi xin vui lòng?
Mã số Ví dụ:
/// <summary>Registers the type mappings with the Unity container.</summary>
/// <param name="container">The unity container to configure.</param>
/// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to
/// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
public static void RegisterTypes(IUnityContainer container)
{
// NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
// container.LoadConfiguration();
// TODO: Register your types here
//container.RegisterType<DbContext, ApplicationDbContext>(new ContainerControlledLifetimeManager());
container.RegisterType<IUnitOfWorkAsync, UnitOfWork>(new PerRequestLifetimeManager());
container.RegisterType<IMainPanelService, MainPanelService>();
container.RegisterType(typeof (IRepositoryAsync<>), typeof (Repository<>));
container.RegisterType<IDataContextAsync, ecoavantisinteractivegciContext>(new PerRequestLifetimeManager());
}
Lớp ApplicationUser của bạn trông như thế nào? Người ta nói rằng nó đang được sử dụng như một lớp khi nó là một giao diện. Nếu bạn đang sử dụng giao diện cho người dùng ứng dụng, bạn đã thử định cấu hình DI cho giao diện đó và thực hiện nó chưa? – grimurd
Có, tôi đã thử, nhưng nó không hoạt động ... Tôi có một số câu hỏi tương tự: http://stackoverflow.com/questions/24731426/register-iauthenticationmanager-with-unity – chemitaxis