自訂ASP.net 2.0 Membership的步驟,和entry ‘AspNetSqlMembershipProvider’ has already been added

來源:互聯網
上載者:User
自訂ASP.net 2.0 Membership的步驟,和entry 'AspNetSqlMembershipProvider' has already been added錯誤的解決

今天再新的系統裡面用上了membership這個功能,雖然很久以前就對他瞭解很多了,但是苦於公司裡面程式的局限性,一直都沒有機會使用它。今天再新的程式裡用上了,不過有一些東西微軟雖然考慮了很多嚴謹的配置,卻無形中給我們帶來了很大麻煩。例如使用者名稱密碼必須是那種強命名方式 最簡單的例子就是Pas$w0rd這個樣子,使得程式員們開發與測試的時候都是很麻煩,還有很多使用者還是很討厭這種註冊密碼的方式。我自己就是一個受害者,分析了一下membership,看了看msdn,這些限制都是我們可以自己定義的。下面是如何自訂的方法和一個討厭的錯誤解決辦法。

1. 首先,到C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG 下找到machine.config檔案,找到下面的這行配置 (當你找到他的時候,可能都寫成一行了,自己斷行符號修改成下面這種樣式更利於閱讀)
 <membership>
      <providers>
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="LocalSqlServer"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="true"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="7"
             minRequiredNonalphanumericCharacters="1"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression="" />
      </providers>
</membership>

2.當你拿到這個membership的配置以後,下一步就是把它拷貝到你自己的web.config的<system.web>這個模組下面。這裡需要稍微解釋一下,預設情況下,asp.net 2.0就預設調用machine.config的membership配置,這也就是為什麼你需要把這個配置拷貝到你自己的web.config下的原因,因為你要修改一些數值。

3. 好了開始大刀闊斧的"砍"吧.

 <membership>
      <providers>
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="LocalSqlServer"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="true"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="4"
  
           minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression="" />
      </providers>
</membership>

(紅色的部分就是我修改的),到了這裡已經差不多大功告成了,但是先別高興得太早,因為如果你這麼運行就會出現一個錯誤"The entry 'AspNetSqlMembershipProvider' has already been added."如果你看到了這個,那麼恭喜你,因為後面就是你要的答案。因為你在web.config裡面重寫membership的配置之後,asp.net還是先去運行machine.config裡面的membership配置,等回來讀到你的web.config的時候,asp.net engine就會糊塗了,因為有兩個membership配置出現了。這就是為什麼產生了這個錯誤。

好了廢話少說,解決問題。一句話,兩種辦法都可以解決。
在 <add name="AspNetSqlMembershipProvider" 前面加上

<remove name="AspNetSqlMembershipProvider"/> 

或者

<clear/>

好了問題解決了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.