/ / Единство зависимостта инжектиране - как да RegisterInstance в .config? - asp.net-mvc, зависимостта-инжекция, единство-контейнер

Инжектиране на зависимостта на единството - как да се регистрирате в .config? - asp.net-mvc, зависимостта-инжекция, единство-контейнер

Това е проект на C # Asp.net MVC.

Понастоящем получих картите на Unity, създадени в global.asax.cs. Исках да премести настройката на контейнера от код към web.config.

Всичко е наред с моите собствени типове, но сега трябва да преведа този ред:

container.RegisterInstance (System.Web.Security.Membership.Provider);

(Всички останали конфигурационни линии са контейнерТип).

Не ме стига много далеч. Ако дори включа

<typeAliases>
<!-- others elided -->
<typeAlias
alias="MembershipProvider"
type="System.Web.Security.MembershipProvider, System.Web"></typeAlias>

тя умира с конфигурационна грешка:

The value of the property "type" cannot be parsed. The error is: Could not load file or assembly "System.Web" or one of its dependencies. The system cannot find the file specified.

Така че това е доста странно - изглежда, че не търси в GAC да го разреши? Или System.Web все още не е в appdomain?

Ако ръчно копирам системата.Уеб в папката за бин мога да продължим и да стигнем до основната тема на въпроса: как да си регистрирате System.Web.Security.MembershipProvider -> System.Web.Security.Membership.Provider?

<type type="MembershipProvider" mapTo="System.Web.Security.Membership.Provider, System.Web"></type>

дава:

Типът "System.Web.Security.Membership.Provider" не можа да се зареди от монтаж "System.Web".

както се очаква, тъй като това не е вид.

Благодаря за указанията.

Отговори:

5 за отговор № 1

опитали ли сте по-дългото справка за Assembliy?

System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Така че във вашия случай ще имате линия като

<type type="MembershipProvider" mapTo="System.Web.Security.MembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"></type>

Също така споменава, че сте имали. в средата на "MembershipProvider" във вашия втори пример.