Не удалось загрузить тип в поставщике пользовательских профилей - PullRequest
10 голосов
/ 19 апреля 2010

Я пишу небольшое консольное приложение на C #, которое ссылается на пользовательскую сборку, которая реализует пользовательский поставщик профиля .net. Я добавил следующие разделы в мой файл app.config, который ссылается на пользовательский класс и сборку.

<system.web>
<profile defaultProvider="MyCompanyProfileProvider" inherits="MyCompany.Web.User.GenericProfile" automaticSaveEnabled="false">
    <providers>
        <clear/>
        <add name="MyCompanyProfileProvider" connectionStringName="defaultDatabase" applicationName="/myApplication" type="MyCompany.Web.ProfileProvider, MyCompany.Web"/>
    </providers>
    <properties>
        <add name="JobRoleId" type="System.Int32"/>
        <add name="LastCompetencyId" type="System.Int32" defaultValue="0"/>
        <add name="MixSettings" type="System.Xml.XmlDocument"/>
    </properties>
</profile></system.web>

Однако, когда я запускаю приложение в режиме отладки, я получаю следующую ошибку, как будто она выглядит в сборке System.Web, а не в файле app.config.

Не удалось загрузить тип 'MyCompany.Web.User.GenericProfile' из сборки 'System.Web, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'.

У меня есть локальное веб-приложение, которое также использует сборку и пользовательский поставщик профилей и работает без проблем. Я проверил, что указанная сборка копируется в выходной каталог.

Есть идеи ??

Ответы [ 3 ]

20 голосов
/ 20 апреля 2010

Я наконец нашел ответ на это, и это было так просто! (Он говорит после нескольких часов поиска и отладки).

Я просто должен был четко сказать, в какой сборке находился мой пользовательский провайдер. Я думал, что мне нужно было сделать это только при указании типа при добавлении провайдера.

Однако вы должны определить это при определении вашего профиля в атрибуте наследования. Вот так:

До:

<profile defaultProvider="MyCompanyProfileProvider"
         inherits="MyCompany.Web.User.GenericProfile"
         automaticSaveEnabled="false">

После того, как:

<profile defaultProvider="MyCompanyProfileProvider" 
         inherits="MyCompany.Web.User.GenericProfile, MyCompany.Web" 
         automaticSaveEnabled="false">

Надеюсь, что в будущем это поможет кому-то еще с той же проблемой.

0 голосов
/ 04 мая 2015

Ваше решение спасло мои извинения после того, как я ПОТЕРЯЛ ДНИ моего драгоценного времени, преследуя эту проблему. Как обычно, у меня были ПОТЕРЯТНЫЕ ДНИ, сражающиеся с продуктами Microsoft, а не с текущими ИТ-проблемами, которые мне нужно решать самим. Мои строки App.Config теперь выглядят так и, кажется, работают нормально:

<profile defaultProvider="DefaultProfileProvider" inherits="SmartTariffs_V13.ProfileCommon, SmartTariffs_V13">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>

Где SmartTariffs_V13 - это имя проекта, а SmartTariffs_V13.ProfileCommon - это имя файла .cs в этом проекте. Я обнаружил, что это работает без добавления вашего тега "AutomaticSaveEnabled", но, эй, хо ...

0 голосов
/ 19 апреля 2010

Попробуйте удалить лишний пробел за запятой, где вы указываете свой класс и сборку, но я не думаю, что это исправит это.

Ваше приложение ищет ваш пользовательский класс в сборке System.Web, что очень странно.

Я бы использовал fuslogvw , чтобы получить более подробную информацию об ошибке.

...