背景:
ASP.NET 会话状态使您能够在用户浏览 Web 应用程序中的 ASP.NET 页面时为用户存储和检索值。这适用于该应用程序,但是当我们在该应用程序中引用了一个类库并且我们需要Session Variables
该库时,我必须将它传递给每个方法,因为我没有使用依赖注入。
问题:
我有一个控制器进行 Facebook 身份验证,如下所示:
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);
}
在这里,几乎在每种方法中,我都需要访问令牌来从 Facebook Graph API 访问数据,但是,我每次都必须从会话中获取它,如下所示
var accessToken = Session["AccessToken"].ToString();
如何使其可用于控制器中的所有方法?
有没有办法在 MVC 和类库之间共享会话而不传递类库HttpContext.Session
的每个方法调用?
注意: 我已经看到了这个答案,但不太清楚它如何在类库中也可用。