第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Unity使用參數(shù)將依賴項(xiàng)注入MVC??過(guò)濾器類

Unity使用參數(shù)將依賴項(xiàng)注入MVC??過(guò)濾器類

qq_花開(kāi)花謝_0 2019-10-21 13:13:31
我正在使用Unity.MVC4依賴項(xiàng)注入來(lái)訪問(wèn)我的服務(wù)。注入Controller構(gòu)造函數(shù)時(shí),一切都應(yīng)該正常進(jìn)行,但是我現(xiàn)在想做的是在過(guò)濾器類中使用屬性注入,以便可以從內(nèi)部訪問(wèn)數(shù)據(jù)庫(kù)。在開(kāi)始這個(gè)問(wèn)題之前,我在Google周?chē)阉鞑L試了不同的示例,但是找不到適合我的解決方案。Bootstrapper.cspublic static class Bootstrapper{    public static IUnityContainer Initialise()    {        var container = BuildUnityContainer();        DependencyResolver.SetResolver(new UnityDependencyResolver(container));        return container;    }    private static IUnityContainer BuildUnityContainer()    {        var container = new UnityContainer();        container.RegisterType<IAccountRepository, AccountRepository>();        container.RegisterType<IAdministrationRepository, AdministrationRepository>();        container.RegisterType<IUploadDirectlyRepository, UploadDirectlyRepository>();        container.RegisterType<IUserRepository, UserRepository>();        container.RegisterType<INewsRepository, NewsRepository>();        container.RegisterType<IContactRepository, ContactRepository>();        // register all your components with the container here        // it is NOT necessary to register your controllers        // e.g. container.RegisterType<ITestService, TestService>();            RegisterTypes(container);        return container;    }    public static void RegisterTypes(IUnityContainer container)    {    }}我將向您顯示的以下代碼用于我想在操作中使用的filter屬性。我想傳遞一個(gè)字符串?dāng)?shù)組類型的參數(shù),以便可以驗(yàn)證是否允許當(dāng)前用戶訪問(wèn)該操作。在我的應(yīng)用程序中,有兩種類型的用戶,帳戶所有者和來(lái)賓。所有操作對(duì)帳戶所有者都是完全開(kāi)放的,但對(duì)于來(lái)賓,操作因操作而異。例如,一個(gè)操作可能要求您至少具有三個(gè)權(quán)限之一(讀取,寫(xiě)入和編輯)。這不起作用,因?yàn)檫^(guò)濾器需要兩個(gè)參數(shù)(IRepository和string [])。顯然,這里也不能使用構(gòu)造函數(shù)注入。然后,我嘗試實(shí)現(xiàn)可在此處找到的John Allers解決方案??雌饋?lái)很有希望,但是卻給了我這個(gè)錯(cuò)誤:Microsoft.Practices.Unity.dll中發(fā)生類型為“ Microsoft.Practices.Unity.ResolutionFailedException”的異常,但未在用戶代碼中處理附加信息:依賴關(guān)系的解析失敗,類型=“ Fildela.ClaimsAuthorizeAccountAccess”,名稱=“(none)”。發(fā)生以下異常:正在解決。異常是:InvalidOperationException-類型為Fildela.ClaimsAuthorizeAccountAccess的屬性_accountRepository無(wú)法設(shè)置。在發(fā)生異常時(shí),容器為:解決Fildela.ClaimsAuthorizeAccountAccess,(無(wú))關(guān)于如何解決這個(gè)壞男孩有什么建議嗎?謝謝!
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先安裝官方軟件包,Unity.Mvc而不是Unity.MVC4。該軟件包會(huì)自動(dòng)安裝并注冊(cè)UnityFilterAttributeFilterProvider屬性注入依賴所需要的軟件包。您可以通過(guò)查看App_Start> UnityMvcActivator的Start方法來(lái)檢查Unity是否配置正確。您必須看到以下兩行:


public static void Start()

{

    // other codes


    FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());

    FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

}

現(xiàn)在,您可以將[Dependency]屬性添加到過(guò)濾器的公共屬性。


public class ClaimsAuthorizeAccountAccess : AuthorizeAttribute

{

    [Dependency]

    public IAccountRepository AccountRepository { get; set; }

    private String[] _permissions { get; set; }


    public ClaimsAuthorizeAccountAccess(params String[] permissions)

    {

        _permissions = permissions;

    }

}


查看完整回答
反對(duì) 回復(fù) 2019-10-21
  • 3 回答
  • 0 關(guān)注
  • 704 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)