Я пишу маленькое консольное приложение в C#, который ссылается на пользовательский блок, который реализует пользовательского поставщика .net Profile. Я добавил следующие разделы к своему 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>
Однако, когда я запускаю приложение в режиме отладки, я получаю следующую ошибку, как будто это смотрит в Системе. Веб-блок, а не один указанный в app.config файле.
Не мог загрузить тип 'MyCompany. Сеть. Пользователь. GenericProfile' от блока 'Система. Сеть, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
У меня есть локальное веб-приложение, которое также использует блок и пользовательского поставщика Профиля и ту работу без любых проблем. Я проверил, что блок, на который ссылаются, копируется в выходной каталог.
Какие-либо идеи??
Я наконец нашел ответ на этот вопрос, и это было так просто !! (Он говорит после нескольких часов поиска и отладки).
Мне просто нужно было явно указать, в какой сборке находится мой пользовательский провайдер. Я думал, что мне нужно сделать это только при указании типа при добавлении провайдера.
Однако вам необходимо указать при определении вашего профиля в атрибуте inherits. Примерно так:
До:
<profile defaultProvider="MyCompanyProfileProvider"
inherits="MyCompany.Web.User.GenericProfile"
automaticSaveEnabled="false">
После:
<profile defaultProvider="MyCompanyProfileProvider"
inherits="MyCompany.Web.User.GenericProfile, MyCompany.Web"
automaticSaveEnabled="false">
Надеюсь, это поможет кому-то еще в будущем с той же проблемой.
Попробуйте удалить лишний пробел за запятой, где вы указываете свой класс и сборку, но я не думаю, что это исправит.
Ваше приложение ищет ваш пользовательский класс в сборке System.Web, что очень странно.
Я бы использовал fuslogvw , чтобы получить более подробную информацию об ошибке.