是否可以在单独的HTTP调用中加载对象并重用所述对象?

时间:2016-09-28 16:10:59

标签: c# asp.net-mvc asp.net-web-api

所以我有一个WEB API,例如我有这个方法:

public JSONResult GetUserInfo(string username)
{
    Reddit reddit = new Reddit("bot12345", "12345"); //load reddit and login
    reddit.GetSubmittedVideos(username);

    var user = User.Get(username);

    //rest of the code here
}

你可以看到我有这一行Reddit reddit = new Reddit("bot12345", "12345"),这行约需2秒,因为它需要通过Reddit API登录。因此,每当有人调用GetUserInfo方法时,我的代码将需要2秒以上的时间才能返回结果,因为它需要调用Reddit。

我想知道是否可以在我的GetUserInfo方法中加载Reddit对象,我只需要调用reddit.GetSubmittedVideos。但我记得HTTP是无状态的,那可能吗?

为糟糕的英语道歉。

1 个答案:

答案 0 :(得分:3)

HTTP 无状态,但ASP.NET有一个Session对象,该对象与一个用户会话隔离,可以存储跨请求持续存在的数据。所以至少你可以这样做:

Reddit reddit = Session["reddit"] as Reddit;
if(reddit == null)
{
    reddit = new Reddit("bot12345", "12345"); //load reddit and login
    Session["reddit"] = reddit;
}
reddit.GetSubmittedVideos(username);

如果相同的Reddit对象可用于所有用户会话,则可以使用Application类而不是Session