gpt4 book ai didi

c# - 在 MVC4 和类库之间共享 session 的最佳方式

转载 作者:行者123 更新时间:2023-11-30 13:58:03 25 4
gpt4 key购买 nike

背景:

ASP.NET session 状态使您能够在用户浏览 Web 应用程序中的 ASP.NET 页面时为用户存储和检索值。这适用于该应用程序,但是当我们在该应用程序中引用了一个类库并且我们需要该库中的 Session Variables 时,我必须将它传递给每个方法,因为我没有使用依赖注入(inject)。

问题:

我有一个进行 Facebook 身份验证的 Controller ,如下所示:

 public class FacebookController : Controller
{
private FacebookGateway FacebookGateway = new FacebookGateway();

// GET: /Facebook/

public ActionResult Index()
{
string code = Request.QueryString["code"];
TokenResponse tokenResponse = FacebookGateway.GetTokenResponse(code);
Session["AccessToken"] = tokenResponse.Access_token;
return View();
}

public ActionResult Friends()
{

string accessToken = Session["AccessToken"].ToString();

WebRequest request = WebRequest.Create(instanceUrl + @"profileUrl-Here");
request.Method = "GET";
request.Headers.Add("Some Header " + accessToken);
WebResponse response = request.GetResponse();
string str = String.Empty;

if (response == null)
{
}
else
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
str = sr.ReadToEnd().Trim();

}
//Convert str to Model
return View(model);
}

在这里,在几乎每种方法中,我都需要访问 token 才能从 Facebook Graph API 访问数据,但是,我必须每次都从 session 中获取它,如下所示

 var accessToken = Session["AccessToken"].ToString();

如何让它对 Controller 中的所有方法可用?

有没有什么方法可以在 MVC 和类库之间共享 session ,而无需在类库的每个方法调用中传递 HttpContext.Session

注意:我看过this answer , 但不太清楚它如何在类库中也可用。

最佳答案

this answer相关(你提到的那个):

您可以将 session 包装器(即 MySession 类)放入您的类库中。这样,类库中的代码以及 Web 应用程序中的代码都可以使用它。

通常,您可以使用 System.Web.HttpContext.Current.Session["AccessToken"] 从任何地方访问 session 状态。即使没有任何包装类,这也能正常工作。

关于c# - 在 MVC4 和类库之间共享 session 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com