Membership.ValidateUser始终在IIS上返回false

Dav*_*büz 7 iis cassini asp.net-membership web-config

Membership.ValidateUser方法适用于开发服务器(iis express和cassini).但是在我的IIS上(它作为我的开发机器上的应用程序发布)它总是返回false.

即使用户已获批准,也未锁定,用户名和密码均正确无误.没有跟踪错误.?

http请求1: davutg-pc:6423/BpmService /登录?userName = abc&password = 0035

结果1: <boolean> true </ boolean>

http请求2: davutg-pc/BPM/BpmService /登录?userName = abc&password = 0035

结果2: <boolean> false </ boolean>

这是我的设置

<roleManager enabled="true" defaultProvider="MySQLRoleProvider"/>

<machineKey validationKey="E8B40EEA5A8EFC6F...key" decryptionKey="385..." validation="SHA1" />

<membership defaultProvider="MySQLMembershipProvider"  hashAlgorithmType="SHA1">
  <providers>
    <remove name="MySQLMembershipProvider"  />
    <add type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.5.5.0, Culture=neutral, 
         PublicKeyToken=c5687fc88969c44d"
         name="MySQLMembershipProvider"
         connectionStringName="LocalMySqlServer"
         minRequiredPasswordLength="3"
         minRequiredNonalphanumericCharacters="0"
         requiresUniqueEmail="false"
         requiresQuestionAndAnswer="false"
         passwordFormat="Encrypted"/>
Run Code Online (Sandbox Code Playgroud)

我比较的machine.configs与Framework 64和Framework相同.

它适用于开发服务器,但在IIS上始终返回false.我可以用IIS 查询不同的服务,没有这样的问题.

另外: 当我为开发服务器输入错误密码"FailedPasswordAttemptCount"时.但它不会改变IIS.IIS出了什么问题.我只是调用Membership.ValidateUser(用户,传递)

任何建议将不胜感激!

Dav*_*büz 9

解决了!希望这能节省一些人的时间.

问题是应用程序名称.

主机:端口/服务

主机/ BPM /服务

注意:BPM是您在IIS上提供的应用程序名称.

成员资格加密算法使用"ApplicatonName".当我设置应用程序时,我使用BPM作为应用程序名称.在开发服务器上,"name"返回"/".但它在IIS上的"BPM"!

我的所有旧密码都是使用"/"appliacion名称生成的.所以始终提供应用程序名称.阅读这篇文章从斯科特谷的博客.

    public bool Login(string userName,string password)
    {
        var provider = Membership.Provider;
        string name = provider.ApplicationName;

        return Membership.ValidateUser(userName, password);
    }
Run Code Online (Sandbox Code Playgroud)

//错了

      <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider"
                type="System...bla bla"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression=""
                applicationName="/" //Wrong
            />
         </providers>
    </membership>
Run Code Online (Sandbox Code Playgroud)

//正确对象,真爱

          <membership>
                <providers>
                <clear/>
            <add name="AspNetSqlMembershipProvider"
                type="System.Web.Security.S.. bla bla"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression=""
                applicationName="MyAPPNAME" //Well :)
            />
         </providers>
    </membership>
Run Code Online (Sandbox Code Playgroud)