The entry '**' 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/>



好了問題解決了  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章