C# 母版页属性和性能
我使用ASP.NET成员身份,我有一个名为UserProfiles的表,它在UserId上与aspnet_用户有1:1的关系,以存储大量额外字段。其中一个字段是OrganizationID,它将在几乎每个页面上与常规角色一起用于授权目的 因此,我需要经常检查登录用户的OrganizationID。我不想为此使用会话,我宁愿使用成员资格cookie并每次调用数据库 在站点的母版页上具有以下属性会对性能造成多大影响:C# 母版页属性和性能,c#,asp.net,asp.net-membership,C#,Asp.net,Asp.net Membership,我使用ASP.NET成员身份,我有一个名为UserProfiles的表,它在UserId上与aspnet_用户有1:1的关系,以存储大量额外字段。其中一个字段是OrganizationID,它将在几乎每个页面上与常规角色一起用于授权目的 因此,我需要经常检查登录用户的OrganizationID。我不想为此使用会话,我宁愿使用成员资格cookie并每次调用数据库 在站点的母版页上具有以下属性会对性能造成多大影响: public UserProfile loggedInUser { get
public UserProfile loggedInUser
{
get
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (Membership.GetUser() != null)
{
Guid userId = (Guid)Membership.GetUser().ProviderUserKey;
using (var db = new DatabaseContext())
{
return db.UserProfiles.Where(l => l.UserId == userId).FirstOrDefault();
}
}
}
return null;
}
}
网站规模不大,流量也不会很大。这是一种可以考虑的方法吗?您可以使用.Find而不是.Where,这通常与您的示例类似 我怀疑这会有什么不同,因为你每次都在创造一个新的环境。如果是我,我可能会尝试通过依赖项注入,使用每个webrequest生命周期或类似生命周期,然后使用Find来注入DbContext。这样,如果您多次使用此属性,开销将大大减少
我很好奇,为什么不使用会话变量呢?您是否担心会议规模过大?正如您所说,这不是一个庞大的网站,这是一个按用户的模式。欣赏这些见解。我会拉小提琴,过一会儿再来。我只是不相信会话——通常将其作为最后手段使用——与会话的大小无关。