【问题标题】:.net profile provider and custom profiles. The settings property '' was not found..net 配置文件提供程序和自定义配置文件。未找到设置属性“”。
【发布时间】:2011-11-28 16:28:40
【问题描述】:

我在这里遇到了一些麻烦。我有一个自定义配置文件,我在同一解决方案的两个应用程序中使用它。第一个是我构建的 Web 应用程序,用于将一组自定义的用户配置文件和属性从旧的 .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>

如果我使用一个应用程序来执行用户导入,而另一个应用程序使用我创建的成员资格、角色和配置文件,这会导致“找不到设置属性”。错误?我似乎无法确定导致错误的位置以及我已经检查过的一些最常见的原因。这是我第一次在 .net 中如此大规模地使用此功能。非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 您在哪里指定了可用的设置名称和类型?如果我没记错的话,它们也应该在 Web.config 文件中指定。
  • 指定的名称和类型在 Profile Common 类本身中。因为我在 web.config 中使用 。它自动知道使用上面列出的 Profile Common 类中的类型。如果我不使用“继承”属性,那么 .net 框架将在运行时抛出一个错误,说明该属性没有被声明。如果未使用继承属性,开发人员必须使用 节点在 web.config 文件中声明名称和类型。

标签: c# asp.net sql-server asp.net-profiles


【解决方案1】:

我发现了我的问题。问题出在调用代码中。我遇到了很多关于配置文件的问题,以至于我忘记将调用代码改回静态方法

ProfileCommon.GetUserProfile();

我遇到的其他问题是在 Web 配置中声明配置文件的属性并在配置文件公共类中声明它们。这导致我收到诸如“属性已定义”之类的翻转错误。和“未找到设置属性''。”

简而言之,如果您使用的是“Web 应用程序”解决方案,请在代码中而不是在 web.config 中声明 ProfileCommon 代理类。如果您使用的是“网站”解决方案,请在 web.config 中声明属性。

我在网络上遇到的最好的例子就是来自这个网站。

ASP.NET Profiles in Web Application Projects

它以简洁的摘要描述了如何使用自定义配置文件,并全面解释了为什么要对 Web 应用程序执行此方法,以及为什么对网站执行不同的方法。希望这可以避免许多头痛。

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多