C# 是否可以在单独的HTTP调用中加载对象并重用所述对象?
因此,我有一个WEB API,例如,我有一个方法:C# 是否可以在单独的HTTP调用中加载对象并重用所述对象?,c#,asp.net-mvc,asp.net-web-api,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 co
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
我想知道是否可以加载Reddit对象,所以在我的GetUserInfo方法中,我只需要调用Reddit.GetSubmittedVideos
。但我记得HTTP是无状态的,所以这可能吗
为糟糕的英语道歉。HTTP是无状态的,但ASP.NET有一个会话
对象,该对象与一个用户会话隔离,可以存储跨请求持久存在的数据。因此,至少你可以做如下事情:
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
对象可用于所有用户会话,那么您可以使用应用程序
类,而不是使用会话
您有关于Reddit会话寿命的信息吗?在字典中第一次运行时,您可能会尝试保护所有登录的regddit实例,这些实例将通过应用程序(静态或单例)以用户名作为密钥共享。而且,你更可能需要存储登录时间来刷新连接。你能更具体地说明一下吗?也许你可以发布一些类似代码的东西,这样我就有了主意。Reddit会话寿命应该是永久性的。可以,请等待10分钟。。。看起来斯坦利已经做到了)