• 自定义ASP.net 2.0 Membership的步骤,和entry 'AspNetSqlMembershipProvider' has already been added错误的解决


    自定义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/>



    好了问题解决了

  • 相关阅读:
    mysql数据库基本类型
    常用辅助类【转】
    Java 并发笔记】并发机制底层实现整理[转发]
    关于PROPAGATION_NESTED的理解
    线程数设置
    c# Expression 扩展[转]
    Net定时器 【转载】
    【转】高可用设计-58沈剑
    【转】委托的三种调用示例(同步调用 异步调用 异步回调)
    [coursera OA] acme match
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/844104.html
Copyright © 2020-2023  润新知