2013-02-12 32 views
7

üyeliğinde false değerini döndürür.ValidateUser yöntemleri geliştirme sunucusunda hem çalışır (iis express ve cassini). Ama benim IIS üzerinde (onun geliştirme makinemde bir uygulama olarak yayımlama) her zaman yanlış döndürür.Membership.ValidateUser her zaman IIS

Kullanıcı bile onaylandı, kilitlenmedi ve kullanıcı adı ve parola doğru. İz hatası yok. ?

http isteği 1: davutg-pc:/BpmService/Giriş userName = abc & şifre = 0035

sonuç 1:? < boolean>gerçek </boolean>

http isteği 2: davutg-pc/BPM/BpmServis/Giriş? UserName = abc & şifre = 0035

sonuç 2: < boolean>yanlış </boolean> İşte

Ben machine.configs aynı Çerçeve 64 ve Çerçeve vardır karşılaştırıldığında

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

benim ayarlardır .

Geliştirme sunucusunda çalışır, ancak IIS'de her zaman false değerini döndürür. Ben IIS ile farklı hizmetler sorgu ve böyle bir sorun yok. EK OLARAK

: Yanlış şifre "FailedPasswordAttemptCount" girin geliştirme sunucusu için arttı. Ancak , IIS için değişmez. IIS ile ilgili sorun yaşıyorum. Ben sadece Membership.ValidateUser (kullanıcı, pass) arayın

Herhangi bir öneri takdir edilecektir!

cevap

7

Çözüldü! Umarım bu birinin zamanını kurtaracaktır.

Sorun, uygulama adıydı.

makine: port/Servis

konak/BPM/Servis

not: BPM IIS üzerinde verin applicaton adıdır.

Üyelik şifreleme algoritması "ApplicatonName" kullanır. Uygulamayı kurduğumda BPM'yi uygulama adı olarak kullandım. geliştirme sunucusunda "isim" geri dönüşü "/". Ama IIS'de "BPM"!

Tüm eski şifrelerim "/" aplikasyon adıyla üretildi. Bu yüzden her zaman bir uygulama adı sağlayın. Scott-Gu'nın blogundan bu article'u okuyun.

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

     return Membership.ValidateUser(userName, password); 
    } 

// Yanlış bir

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

// Sağ biri

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