ASP.NET Web窗体自定义成员身份提供程序错

时间:2012-02-06 09:35:04

标签: asp.net membership-provider sqlmembershipprovider

在我的ASP.NET Web窗体应用程序中,我正在尝试创建自己的SQLMembershipProvider类,以在运行时覆盖ConnectionString。但是我收到一个配置错误:“类型'ExtendRegv1.MyMembershipProvider'含糊不清”

我在App_code文件夹中创建了以下类...

我的自定义成员资格提供程序类

namespace ExtendRegv1
{
    public class MyMembershipProvider :SqlMembershipProvider
    {
        public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
        {
            base.Initialize(name, config);

            string connectionString = "Data Source=BSHEEHAN-PC\\SQLEXPRESS;Initial Catalog=ExReg_Default;Integrated Security=True";

            FieldInfo connectionStringField = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
        connectionStringField.SetValue(this, connectionString);  

        }
    }
}

网络配置:

<membership>
    <providers>
        <clear />
              <add name="MyMembershipProvider" type="ExtendRegv1.MyMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
    </providers>
</membership>

谢谢,Ben

1 个答案:

答案 0 :(得分:0)

我刚刚在一个测试项目中试过这个,它对我来说很好。所以几个想法

  1. 当我将该类放入App_Code时,我必须右键单击该文件,并在属性中将构建操作从内容更改为编译 - 是在VS 2010中。这不太可能是您的问题。

  2. 更有可能 - 你有两份MyMembershipProvider副本 - 即它是否也包含在构建中的dll中。它甚至可能是别人的演示代码。我会注释掉你的app_code类,看看是否有构建。它不会解决它 - 只是给你一个很好的迹象表明错误。无论如何,我很想把课程放在一个dll中 - 但那只是我(恕我直言和所有这些)

  3. 就像我说的那样 - 在经典开发者讲话中 - 在我的构建中为我工作(这几乎就像一个座右铭!)