我想保存一些变量供将来参考,所以我宣布了一个类Container.cs
public class Container
{
public static String verifierCode;
}
然后我有HomeController.cs
我更新Container的变量值:
public class HomeController : Controller
{
public ActionResult ValidateTwitterAuth()
{
Container.verifierCode = Request.Query.ElementAt(2).Value;
//do some stuff
}
public String sendTweet(String NewTweet)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(Container.verifierCode, Container.authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
user.PublishTweet(NewTweet);
return "sent!";
}
}
它会在ValidateTwitterAuth
中使用特定值进行更新,但在调用sendTweet
方法时,Container.verifierCode
为空。
我显然试图调试它,但如果我将变量添加到quickwatch我得到
错误CS0103:当前上下文中不存在名称“容器”
此外,类和容器都在同一名称空间中。 任何想法/提示为什么会发生这种情况?我只是想声明一个我可以从其他类/控制器访问的全局变量。
如果这听起来像是一个初学者问题,我很抱歉,但我刚开始接触asp.net
编辑:从答案来看,我处理问题的方式是错误的。因此我安装了Microsoft.AspNetCore.Session
NuGet包并使用它:
HttpContext.Session.SetString("verifierCode", Request.Query.ElementAt(2).Value);
HttpContext.Session.SetString("authorizationId", Request.Query.ElementAt(0).Value);
现在它有效。谢谢大家的答案!
答案 0 :(得分:2)
您可以将此数据存储到session而不是class.as,如下例所示
public class HomeController : Controller
{
public ActionResult ValidateTwitterAuth()
{
Session["verifierCode"] = Request.Query.ElementAt(2).Value;
//do some stuff
}
public String sendTweet(String NewTweet)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(Session["verifierCode"], Container.authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
user.PublishTweet(NewTweet);
return "sent!";
}
}
我刚刚更改了验证码