Внедрение зависимостей в Unity - как зарегистрировать экземпляр в .config? - PullRequest
3 голосов
/ 20 апреля 2009

Это проект 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 еще не находится в домене приложения?

Если я вручную скопирую System.Web в папку bin, я смогу продолжить и разобраться в сути проблемы: как вы регистрируете 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'.

как и ожидалось, так как это не тип.

Спасибо за любые указатели.

1 Ответ

5 голосов
/ 27 апреля 2009

пробовали ли вы более длинную ссылку на сборку?

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" во втором примере.

...