3

UserId匿名ユーザーからaspnet メンバーシップ フィールドを取得しようとしています。

web.config で匿名識別を有効にしました:

<anonymousIdentification enabled="true" />

プロファイルも作成しました。

<profile>

  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
         connectionStringName="ApplicationServices" 
         applicationName="/" />
  </providers>

  <properties>
    <add name="Email" type="System.String" allowAnonymous="true"/>
    <add name="SomethingElse" type="System.Int32" allowAnonymous="true"/>
  </properties>

</profile>

aspnetdb\aspnet_Usersプロファイル情報が設定されている匿名ユーザーのデータがテーブルに表示されます。

Userid                                  PropertyNames   PropertyValuesString     
36139818-4245-45dd-99cb-2a721d43f9c5    Email:S:0:17:   me@example.com

「Userid」値を取得する方法を見つける必要があります。

使用できません:

 Membership.Provider.GetUser(Request.AnonymousID, false); 

Request.AnonymousID は別の GUID であり、36139818-4245-45dd-99cb-2a721d43f9c5 と等しくありません。

このユーザー ID を取得する方法はありますか。匿名ユーザーの不完全なアクティビティに関連付けたい。の主キーを使用するaspnet_Usersことは、独自の GUID を作成するよりも望ましい方法です (作成してプロファイルに保存することもできます)。

これは基本的にこの質問のだまされていますが、実際に質問に答えたことはありません。

4

2 に答える 2

4

これを使用して、匿名ユーザーの UserId を取得できます。

文字列 userId = Request.AnonymousID

于 2010-05-15T13:10:32.147 に答える
2

OK、 MemberShip.GetUser()タイプ のオブジェクトを返しますMembershipUser

aspnetdbデータベースのテーブルをさらに掘り下げるとaspnet_Users、すべてのユーザー (匿名ユーザーも含む) に対して行が作成されますが、ユーザーが実際に認証/登録されていない限り、aspnet_Membership に行は作成されないようです。

ただし、匿名ユーザー プロファイル (aspnet_Users テーブル) には、UserName.

私はまだUserId匿名ユーザーのプロパティにアクセスする方法を見つけていませんが、実際にはユーザー名がより便利なキーであることに気付きました。

UserIdフィールドはテーブルにも存在するためaspnet_Users、一意の UserId フィールドが本当に必要な場合は、「手動」SQL ルックアップで取得できます。

于 2009-10-27T01:40:13.427 に答える