2013-02-12 12 views
7

Membership.ValidateUserメソッドは開発サーバー(iis expressとcassini)の両方で動作します。 しかし私のIIS(私の開発マシン上のアプリケーションとしての公開)では、常にfalseを返します。Membership.ValidateUserは常にIISでfalseを返します。

ユーザーが承認され、ロックされず、ユーザー名とパスワードも正しいです。トレースエラーはありません。 ?

HTTP要求1: davutg-PC:?/BpmService /ログインユーザーネーム= ABC &パスワード= 0035

結果1:> < /ブール <ブール>

httpリクエスト2: davutg-pc/BPM/BpmService/Login?userName = abc &パスワード= 0035

結果2: <ブール> < /ブール>ここ

は、私はmachine.configsが同じフレームワーク64とフレームワークです比較

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

私の設定です。

開発サーバーで動作しますが、IISでは常にfalseが返されます。私はと異なる質問 IISとそのような問題はありません。 ADDITION、IN

:私は間違ったパスワードを入力し"FailedPasswordAttemptCount" は、開発サーバー用を増加させました。 はIISでは変更されません。 IISで何が問題になっているのですか?私はMembership.ValidateUser(ユーザー、パス)を呼び出すだけです

すべての提案をいただければ幸いです!

答えて

7

解決済み!これが誰かの時間を節約することを願っています。

問題はアプリケーション名でした。

ホスト:ポート/サービス

ホスト/ BPM /サービス

注:BPMは、IIS上でそれを与えるapplicaton名前です。

メンバーシップ暗号化アルゴリズムでは「ApplicatonName」が使用されます。私がアプリケーションをセットアップするとき、アプリケーション名としてBPMを使用しました。開発サーバーでは "name"が "/"を返します。しかし、IIS上の "BPM"!

私のすべての古いパスワードは "/"アプリケーション名で生成されました。常にアプリケーション名を指定してください。 Scott-Guのブログからarticleを読んでください。

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

     return Membership.ValidateUser(userName, password); 
    } 

//間違った1

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

//右1

  <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> 
関連する問題