1


a)現在のユーザーが初めてプロファイルオブジェクトにアクセスするとき、Asp.Netはそのユーザーの完全なプロファイルを取得しますか、それともプロファイルプロパティは呼び出されたときに一度に1つずつ取得されますか?


b)いずれの場合も、現在のユーザーのプロファイルデータは、呼び出されるたびにDBから取得されますか、それとも1回だけ取得されてから、現在の要求の期間中保存されますか?


ありがとう

4

2 に答える 2

1

これがWebサイトプロジェクトであるかWebアプリケーションプロジェクトであるかを指定しません。プロファイルに関しては、Webアプリケーションプロジェクトテンプレートの箱から出して実装されていないため、大きな違いがあります。

http://codersbarn.com/post/2008/07/10/ASPNET-PayPal-Subscriptions-IPN.aspx

http://leedumond.com/blog/asp-net-profiles-in-web-application-projects/

実際に実装しましたか、それとも計画段階ですか?後者の場合、上記のリンクはいくつかの貴重な情報を提供するはずです。キャッシングの問題に関しては、デイブのアドバイスを参考にします。

于 2009-11-16T19:54:55.507 に答える
1

データベース呼び出しを保存する場合は、ユーティリティ メソッドを使用してプロファイルをキャッシュするか、キャッシュを処理する独自のカスタム MembershipProvider を実装できます。

カスタム MembershipProvider を実装することによって提供される、実装したい他の機能がない限り、ユーティリティ メソッドはおそらくこの場合の最も単純なソリューションです。

詳細については、このリンクを参照してください: How can I access UserId in ASP.NET Membership without using Membership.GetUser()?

キャッシュを行うためのユーティリティ メソッドの例を次に示します。ユーザー数が多い場合は、slideMinutesToExpire を渡して一定時間後にキャッシュから期限切れにすることで、過剰なサーバー メモリの消費を避けることができます。

public static void AddToCache(string key, Object value, int slidingMinutesToExpire)
{
    if (slidingMinutesToExpire == 0)
    {
        HttpRuntime.Cache.Insert(key, value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.NotRemovable, null);
    }
    else
    {
        HttpRuntime.Cache.Insert(key, value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(slidingMinutesToExpire), System.Web.Caching.CacheItemPriority.NotRemovable, null);
    }
}
于 2009-11-16T19:25:54.207 に答える