.net провайдер и пользовательские профили. Свойство настроек '' не найдено. - PullRequest
3 голосов
/ 28 ноября 2011

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

using System;
using System.Web.Security;
using System.Web.Profile;
using System.Collections.Specialized;


namespace WebProject
{
    public class ProfileCommon : ProfileBase
    {
        public static ProfileCommon GetUserProfile(string username)
        {
            return Create(username) as ProfileCommon;
        }

        public static ProfileCommon GetUserProfile()
        {
            return Create(Membership.GetUser().UserName) as ProfileCommon;
        }

        [SettingsAllowAnonymous(false)]
        public string FirstName
        {
            get
            {
                return base["FirstName"] as string;
            }
            set
            {
                base["FirstName"] = value;
            }
        }

        [SettingsAllowAnonymous(false)]
        public string LastName
        {
            get
            {
                return base["LastName"] as string;
            }
            set
            {
                base["LastName"] = value;
            }
        }

        [SettingsAllowAnonymous(false)]
        public string Email
        {
            get
            {
                return base["Email"] as string;
            }
            set
            {
                base["Email"] = value;
            }
        }

        [SettingsAllowAnonymous(false)]
        public StringCollection Sites
        {
            get
            {
                return base["Sites"] as StringCollection;
            }

            set
            {
                base["Sites"] = value;
            }
        }
    }
}

Мой раздел поставщика профилей в моем файле веб-конфигурации выглядит следующим образом.

<profile defaultProvider="WebProjectProfileProvider" inherits="WebProject.ProfileCommon">
  <providers>
    <clear />
    <add name="WebProjectProfileProvider" applicationName="/" type="System.Web.Profile.SqlProfileProvider" connectionStringName="Test"/>
  </providers>
</profile>

Если я использую одно приложение длявыполните импорт пользователя, а другой, использующий членство, роли и профили, которые я создал, вызвал бы то, что «свойство settings» не было найдено ».ошибка?Кажется, я не могу точно определить, где причина ошибки и некоторые из наиболее распространенных причин, которые я уже проверил.Я впервые использую эту функцию в .net в таком большом масштабе.Любая помощь с благодарностью.

Спасибо.

1 Ответ

1 голос
/ 28 ноября 2011

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

ProfileCommon.GetUserProfile();

Другие проблемы, с которыми я столкнулся, - это объявление свойств профиля в веб-конфигурации.и объявив их в профиле общего класса.Это приводило к тому, что у меня появлялись ошибки, такие как «свойство уже определено».и «Свойство settings» не найдено.

Короче говоря, объявите прокси-класс ProfileCommon в коде, а не в web.config, если вы используете решение «Веб-приложение».Объявите свойства в web.config, если вы используете решение «веб-сайт».

Лучший пример, который я нашел в Интернете, был с этого сайта.

ASPПрофили .NET в проектах веб-приложений

Описывает, как использовать настраиваемые профили, в кратком изложении и дает полное объяснение того, почему этот метод применяется для веб-приложений и почему он применяется по-разному для веб-сайтов.,Надеюсь, это избавит от многих головных болей.

...