1

我正在为我的一个网站使用 ASP.NET 会话状态服务器。我将一个用户对象放在会话中,因为它被使用了很多。

考虑以下代码片段:

DoSomething(SessionUser.Me.UserID)
DoSomeMore(SessionUser.Me.UserName)

SessionUser.Me 是一个静态属性,它的作用类似于:

return (SessionUser)Session["currentuser"];

现在因为我访问 SessionUser.Me 2 次(DoSomething 和 DoSomeMore)是 .NET 足够聪明,不会对 stateserver 进行 2 次往返并反序列化 2 次?

换句话说,如果我只是这样做,它的性能是否相同:

var user = SessionUser.Me;
DoSomething(user.UserID)
DoSomeMore(user.UserName)

?

4

1 回答 1

1

Session 在请求管道的早期从状态服务器反序列化(参见HttpApplication.AcquireRequestState,并在页面执行完成时写回状态服务器(参见HttpApplication.ReleaseRequestState)。

因此,您不应因重复访问而导致性能下降。

于 2012-12-03T17:23:26.353 回答