2011-02-02 10 views
1

不正な値を返す私はコントローラーASP.NET MVC会員GetNumberOfUsersOnlineは

ViewData["UsersOnLineNow"] = Membership.GetNumberOfUsersOnline().ToString(); 

に次の行を持っている私は、管理者としてログインしていますが、上記QickWatchによって検証、0の値を返しています。私はこれが2の正しい値を返して、私はまた、コントローラに

ViewData["RegisteredUsers"] = Membership.GetAllUsers().Count.ToString(); 

を以下している1.

の値を期待していた、自分自身が含まれています。

誰もがこの分野で問題を抱えていましたか?

+0

どのようにログインしていますか? – hunter

+0

メンバーシップの設定を教えていただけますか? – frennky

+0

@hunter私はRemember Me機能を使って自動的にログインします。 – xiecs

答えて

0

MSDN:

GetNumberOfUsersOnlineは 最後のアクティビティ日が 現在時刻以下 UserIsOnlineTimeWindowより大きい電流 のApplicationNameに対するユーザーの 数を返します。 最後のアクティビティの日付/タイムスタンプは、現在の日付とユーザーの資格情報が のvalidateUserまたはUpdateUser 方法の方法またはときGETUSERパラメータを取りません 過負荷や 1への呼び出しによって検証された時間 に更新 ですuserIsOnline パラメータを使用して、 の日付/時刻スタンプを更新するように指定します。

ヒント:UserIsOnlineTimeWindowを高い値に設定してみてください。デフォルト値は15分です。次の例では60に設定しています。

<membership defaultProvider="AspNetSqlMembershipProvider" 
    userIsOnlineTimeWindow="60"> 
    <providers> 
    <add name="AspNetSqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     applicationName="/" /> 
    </providers> 
</membership> 
+0

私は答えを見つけたと思います。自動ログインを使用すると、GetNumberOfUsersOnline()は自分のログインに値0を返します。私が毎回ログインすると、GetNumberOfUsersOnline()は1の値を返します。 – xiecs

+0

あなたは私の答えからそれを結論づけることができました。ログインすると、ValidateUserが呼び出され、last-activityが更新されます。 「私を覚えている」と言うと、Cookieが使用されるため、ValidateUserは決して呼び出されません。 – frennky

+0

私はできなかったと思います。残念ながら、私はASP.NET MVCなどのニュアンスにまだ慣れていません。とにかく助けてくれてありがとう。 – xiecs

関連する問題