2009-11-16 42 views
1


檢索只是一次,當前用戶簡檔數據

a)如果當前用戶訪問資料對象首次,並Asp.Net 檢索該用戶的完整簡檔或是配置文件屬性檢索到的一個以他們被稱爲時間?


b)在任何情況下,是簡檔數據用於從DB每次被調用或它檢索只是一次,然後保存爲當前請求的持續時間時檢索當前用戶?


感謝名單

回答

1

如果你想保存數據庫調用,您可以使用一個實用的方法來緩存配置文件,也可以實現它處理緩存自己的自定義的MembershipProvider。

在這種情況下,實用程序方法可能是最簡單的解決方案,除非您有其他功能要實現自定義MembershipProvider來實現。

您可以參考此鏈接瞭解詳情: How can I access UserId in ASP.NET Membership without using Membership.GetUser()?

這裏有一個實用的方法來做緩存的例子。您可以傳遞slidingMinutesToExpire以使其在緩存一段時間後從緩存中過期,以避免在有許多用戶的情況下消耗多餘的服務器內存。

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); 
    } 
} 
+0

所以我認爲,與網站項目當前用戶的配置文件數據每次調用時從數據庫中檢索? – PrgGnt 2009-11-17 18:12:47

1

您不指定這是網站項目還是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/

你有沒有真正實現它還是你只是在規劃階段?如果是後者,那麼上面的鏈接應該提供一些有價值的信息。關於緩存問題,我會按照Dave的建議去做。

+0

1)我不知道有什麼區別 - 在這種情況下,我最初的問題是指網站項目 2)請問爲什麼Web項目不能實現開箱即用的配置文件? – PrgGnt 2009-11-16 20:04:30

+1

由於某種原因,微軟從來沒有見過適合他們的產品。如果您按照這些鏈接中的解決方案進行操作,實施起來相當容易。讓他們先工作,然後擔心緩存問題,這很容易解決:-) – IrishChieftain 2009-11-16 20:20:44

相關問題