moss表单认证的问题

1.Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element.
2. 要是调试将mode置为Off
<customErrors mode="Off|On|RemoteOnly"

/>

以下几节描述了属性、子元素和父元素。

属性

属性 说明

mode

必选的属性。

指示此应用程序域中的服务器通道是否将经筛选的或完整的异常信息返回给本地或远程调用方。默认值为 RemoteOnly,该值只将完整的异常信息(包括堆栈跟踪信息)返回给作为服务器的同一计算机上的调用方。

子元素

无。

父元素

元素 说明

configuration

公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中的根元素。

system.runtime.remoting

包含有关远程对象和信道的信息。

完整的异常信息包括确切的服务器异常信息和服务器堆栈跟踪信息。筛选后的信息包括标准的远程异常信息,但不包括服务器堆栈跟踪信息。

下表描述了三个服务器通道属性值,这些值指定收到异常信息的调用方及其收到的信息类型。

说明

Off

所有调用方均收到完整的异常信息。

On

所有调用方均收到筛选后的异常信息。

RemoteOnly

本地调用方收到完整的异常信息,远程调用方收到筛选后的异常信息。

3.强制密码改成自定义的输入方法
解决:Password length minimum: 7. Non-alphanumeric characters required: 1.(转)
根据以下文字结合实际:用以下文字即可
<membership defaultProvider="AspNetSqlMembershipProvider">
   <providers>
    <remove name="AspNetSqlMembershipProvider" />
    <add connectionStringName="AspNetSqlProvider"
    passwordAttemptWindow="10"
    enablePasswordRetrieval="false"
    enablePasswordReset="true"
    requiresQuestionAndAnswer="true"
    applicationName="/"
    requiresUniqueEmail="false"
    passwordFormat="Hashed"
    description="Stores and retrieves membership data from the Microsoft SQL Server database"
    name="AspNetSqlMembershipProvider"
 minRequiredPasswordLength="4"
    minRequiredNonalphanumericCharacters="0"
    type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   </providers>
  </membership>

今天再新的程序里用上了,不过有一些东西微软虽然考虑了很多严谨的配置,却无形中给我们带来了很大麻烦。例如用户名密码必须是那种强命名方式最简单的例子就是Pas$w0rd这个样子,使得程序员们开发和测试的时候都是很麻烦,还有很多用户还是很讨厌这种注册密码的方式。我自己就是一个受害者,分析了一下membership,看了看msdn,这些限制都是我们可以自己定义的。下面是如何自定义的方法和一个讨厌的错误解决办法。


1. 首先,到C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\WebSites\WebSite2下找到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/>


好了问题解决了

你可能感兴趣的:(OS)