2013-02-12 15 views
7
zurück

Membership.ValidateUser-Methoden funktionieren auf dem Entwicklungsserver (IIS Express und Cassini). Aber auf meinem IIS (seine Veröffentlichung als eine Anwendung auf meinem Entwicklungscomputer) Es immer false zurückgeben.Membership.ValidateUser gibt auf IIS immer

Sogar Benutzer ist genehmigt, nicht gesperrt und Benutzername und Passwort sind korrekt. Es gibt keinen Ablauffehler. ?

http Anfrage 1: davutg-PC:/BpmService/Login Benutzername = abc & Passwort = 0035

Ergebnis 1: < boolean>wahr </boolean>

http Anfrage 2: davutg-pc/BPM/BpmService/Login benutzername = abc 012.322.Passwort = 0035

Ergebnis 2: < boolean>falsch </boolean>

Hier sind meine Einstellungen

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

Ich verglich machine.configs sind die gleichen Rahmen 64 und Rahmen .

Es funktioniert auf dem Entwicklungsserver, aber auf IIS gibt immer false zurück. Ich kann Abfrage verschiedener Dienste mit IIS und kein solches Problem.

IN ADDITION: Wenn ich ein falsches Passwort "FailedPasswordAttemptCount" eingeben erhöht für Entwicklungsserver. Aber es ändert sich nicht für IIS. Was läuft falsch mit IIS? Ich rufe nur Membership.ValidateUser (Benutzer, pass)

Jeder Vorschlag wird geschätzt!

Antwort

7

Gelöst! Hoffe, dass dies jemand Zeit sparen wird.

Das Problem war der Anwendungsname.

Host: Port/Service-

host/BPM/Dienstleistung

Anmerkung: BPM ist applicaton Name Sie es auf IIS geben.

Mitgliedschaft Verschlüsselungsalgorithmus verwendet "ApplicatonName". Bei der Einrichtung der Anwendung habe ich BPM als Anwendungsname verwendet. Auf dem Entwicklungsserver gibt der "Name" "/" zurück. Aber sein "BPM" auf IIS!

Alle meine alten Passwörter wurden mit "/" appliacion name generiert. Geben Sie daher immer einen Anwendungsnamen an. Lesen Sie diese article von Scott-Gu Blog.

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

     return Membership.ValidateUser(userName, password); 
    } 

// falsche

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

// richtige

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