Членство.ValidateUser всегда возвращает false на IIS


Членство.Методы ValidateUser работают на сервере разработки(iis express и cassini). Но на моем IIS (его публикация в качестве приложения на моей машине разработки) он всегда возвращает false.

Даже пользователь одобрен, не заблокирован и имя пользователя и пароль верны. Ошибки трассировки нет. ?

Http-запрос 1: davutg-pc:6423/BpmService / Login?userName=abc & password=0035

Результат 1: true

Http-запрос 2: davutg-pc/BPM/BpmService / Login?userName=abc & password=0035

Результат 2: false

Вот мои настройки

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

Я сравнил машину.конфигурации-это те же фреймворк 64 и фреймворк.

Он работает на сервере разработки, но на IIS всегда возвращает false. Я могу запрашивать различные службы с помощью IIS, и такой проблемы нет.

КРОМЕ ТОГО: Когда я вхожу неправильно пароль "FailedPasswordAttemptCount" увеличен для сервера разработки. Но это не меняется для IIS . Что происходит не так с IIS. Я просто называю членство.ValidateUser (user,pass)

Любое предложение будет оценено !

1 7

1 ответ:

Решено! Надеюсь, это сэкономит чье-то время.

Проблема заключалась в имени приложения .

Хост: порт / служба

Хост/BPM / Service

Примечание: BPM-это имя приложения, которое вы даете ему в IIS.

Алгоритм шифрования членства использует "ApplicatonName". При настройке applicaton я использовал BPM в качестве имени приложения. на сервере разработки" имя " возвращает "/". Но его " BPM " на IIS !

Все мои старые пароли были сгенерированы с именем 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>