Membership.ValidateUser总是返回IIS错误(Membership.Valida

2019-08-16 21:44发布

Membership.ValidateUser方法的工作原理开发服务器上(IIS Express和卡西尼)。 但在我的IIS(它作为我的开发机器上的应用程序发布),它总是返回false。

即使用户是否被批准,没有锁定,用户名和密码是否正确。 没有一丝错误。 ?

http请求1:davutg-PC:6423 / BpmService /登录用户名= ABC&口令= 0035?

结果1:<布尔> </布尔>

http请求2:davutg-PC / BPM / BpmService /登录用户名= ABC&口令= 0035?

结果2:<布尔> </布尔>

这里是我的设置

<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"/>

我比较machine.configs是相同的框架64和框架。

它的工作原理开发服务器上,而在IIS总是返回false。 我可以查询与IIS和没有这样的问题, 不同的服务

另外:当我输入错误的密码“FailedPasswordAttemptCount”增加了开发服务器。 但它并不适用于IIS改变 。 这是怎么回事错IIS。 我只是叫Membership.ValidateUser(user和pass)

任何建议将不胜感激!

Answer 1:

解决了! 希望这将节省别人的时间。

问题是应用程序名称。

主机:端口/服务

主机/ BPM /服务

注:BPM是你给它在IIS上的一个应用的名字。

会员加密算法使用“ApplicatonName”。 当我安装应用程序我用BPM的应用程序名称。 开发服务器上的“姓名”返回“/”。 但在IIS的“BPM”!

我所有的旧密码用“/” appliacion名称生成。 所以,总是提供应用程序名称。 阅读这篇文章从斯科特谷的博客。

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

        return Membership.ValidateUser(userName, password);
    }

//一个错误

      <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>

//正确对象,真爱

          <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>


Answer 2:

我也面临这个问题,我无法修复了两个星期。

专注于创建使用成员的CreateUser()

MembershipCreateStatus createStatus;
MembershipUser member = 
Membership.CreateUser(TextBox_username.Text.Replace("'", "''"), 
           TextBox_password.Text.Replace("'", "''"), 
           TextBox_email.Text.Replace("'", "''"), null, null, true, out createStatus);

检查如何CreateUser()函数被调用。 它应该是这样的。



文章来源: Membership.ValidateUser always return false on IIS