2014-08-27 71 views
1

我已經繼承了一個現有的使用Unity DI容器的ASP.Net MVC項目。所有註冊都在web.config中定義。Unity容器試圖解決非註冊類型,拋出錯誤

當一個新的服務/類引入到項目中時,我將它與一個接口一起創建,然後更新配置文件以處理註冊。例如:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <assembly name="UnityDi.Contracts" /> 
    <assembly name="UnityDi.Domain" /> 
    <assembly name="UnityDi.Services" /> 
    <assembly name="UnityDi.Repositories" /> 
    <namespace name="UnityDi.Contracts" /> 
    <namespace name="UnityDi.Domain" /> 
    <namespace name="UnityDi.Services" /> 
    <namespace name="UnityDi.Repositories" /> 
    <container> 
     <register type="Foo.Worker.Interfaces.IIndividualWorker, Foo.Worker" mapTo="Foo.Worker.Workers.IndividualWorker, Foo.Worker"></register> 
    </container> 
</unity> 

當IIndividualWorker類或控制器是必需的,我與相關性屬性添加:

[Dependency] 
public IIndividualWorker IndividualWorker { get; set; } 

到目前爲止,這工作得很好.....

我現在遇到了一個問題,我不明白,我承認我的Unity知識並不是最深的。

我創建了一個新的MVC Web應用程序,它將使用與第一個應用程序相同的後端分層,如上所示。我以同樣的方式配置了Web.Config,並且所有的參考都已經到位。我得到的問題是,新的Web應用程序利用ASP.Net Identity作爲其安全機制(以前的應用程序具有簡單成員資格)。

在註冊新用戶,使用標準的ASP.Net MVC認證模板,我得到的錯誤「當前類型,Microsoft.AspNet.Identity.IUserStore`1 [Foo.Web2.Models.ApplicationUser],是一個接口,無法構造。是否缺少類型映射?

看來,統一是試圖處理ApplicationUserManager類

public ApplicationUserManager(IUserStore<ApplicationUser> store) 

是否有辦法解決的參數?我可以讓Unity離開這個(大概是其他模板化代碼)嗎,只是試圖解決我在.Config中定義的那些?

感謝,

回答

4

最後,我明確地增加了IUserStore

container.RegisterType(typeof(IUserStore<ApplicationUser>), typeof(UserStore<ApplicationUser>)); 

什麼扔我是,除了統一似乎整個以前工作過的代碼庫影響許多接口的註冊。任何更多的這種性質的錯誤,我一定會明確註冊有問題的接口。

我仍然懷疑必須有一些選項可以讓Unity只限於提供的註冊,Unity專家可以提供建議嗎?

相關問題