2012-02-06 114 views
1

在我的ASP.NET Web窗体应用程序中,我试图创建自己的SQLMembershipProvider类,以在运行时覆盖ConnectionString。但是,我得到一个配置错误:“类型‘ExtendRegv1.MyMembershipProvider’不明确”ASP.NET Web窗体自定义会员提供程序错误

我已经创建的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); 

     } 
    } 
} 

Web配置:

<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> 

谢谢,本

+0

你可以使类偏 '公共部分类MyMembershipProvider'当然,你是有问题的其他副本将需要部分太 – 2012-02-06 11:08:25

+0

- !这里曾经是为 – 2012-02-06 11:30:53

回答

0

我刚刚在一个测试项目中尝试了这一点,它对我来说工作正常。所以夫妇的想法

  1. 当我把全班学生分成App_Code文件我不得不右键单击文件和属性从内容到编译更改构建行动 - 是在VS 2010这是不太可能是您的问题。

  2. 更有可能 - 你有两个MyMembershipProvider副本 - 也就是它也在一个包含在构建中的dll中。它甚至可能是某人elses演示代码。我会评论你的app_code类,看看是否构建。它不会解决它 - 只是给你一个很好的指示什么是错的。我会很想把一个dll中的类无论如何 - 但是这只是我(恕我直言和所有)

就像我说的 - 在经典的开发商说话 - 对我的作品在我的版本(它就像一个座右铭几乎)

+0

十分感谢,是第二个选项。通过在web.config中指定程序集解决它,所以键入=“ExtendRegv1.MyMembershipProvider,ExtendRegv1” – 2012-02-06 11:32:17

+0

@BenSheehan - 很乐意帮助 - 如果正确,你可以标记为答案 - 绿色的勾号。当我获得额外声誉的嗡嗡声和奖励时,你会得到一个厚脸皮+2的讨价还价 – 2012-02-06 11:37:31

相关问题