2

そのため、匿名ユーザーのプロファイルをサポートしようとしているasp.net Webアプリケーション(Webサイトではない)があります。フォームがあり、匿名ユーザーが自分の名前と電子メールを1回だけ入力できるようにし、次回の読み込み時にその情報に自動的にアクセスできるようにしたい。

私のWeb.configには、次のような匿名IDの設定があります。

<anonymousIdentification enabled="true" cookieless="AutoDetect" />

プロファイルセクションを次のように設定します。

<profile defaultProvider="SqlProvider" enabled="true" inherits="QA_Web_Tools.UserProfile">
  <providers>
    <clear />
    <add connectionStringName="QAToolsConnectionString" name="SqlProvider"
         type="System.Web.Profile.SqlProfileProvider" />
  </providers>
</profile>

最後に、私のアプリはWebサイトではなくWebアプリであるため、このカスタムオブジェクトを介してプロファイルを使用しています。

public class UserProfile : ProfileBase
{
    public static UserProfile GetUserProfile(string username)
    {
        return Create(username) as UserProfile;
    }

    public static UserProfile GetUserProfile()
    {
        return Create(Membership.GetUser().UserName) as UserProfile;
    }

    [SettingsAllowAnonymous(true)]
    public string FullName
    {
        get { return base["FullName"] as string; }
        set { base["FullName"] = value; }
    }

    [SettingsAllowAnonymous(true)]
    public string BuildEmail
    {
        get { return base["BuildEmail"] as string; }
        set { base["BuildEvmail"] = value; }
    }
}

このコードは、このリファレンスに基づいています。

問題は、そのコードが匿名ユーザーをサポートしていないか、サポートしている場合は方法がわからないことです。GetUserProfile()ユーザーが匿名の場合Membership.GetUser()はnullであるため、パラメーターなしでメソッドを使用することはできません。匿名IDトークンを最初のメソッドに渡すことはできましたがGetUserProfile(string username)、現在のユーザーの匿名IDトークンを取得する方法が見つかりません。

誰かがこの情報を取得する方法を知っていますか?Googleは有用な結果を返していないようです。

ありがとう、

4

1 に答える 1

2

成功!

私が変更され:

public static UserProfile GetUserProfile()
{
    return Create(Membership.GetUser().UserName) as UserProfile;
}

    public static UserProfile GetUserProfile()
    {
        return HttpContext.Current.Profile as UserProfile;
    }

そして今それは動作します!

于 2010-06-14T15:53:24.973 に答える