2012-02-06 64 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

相關問題