我在申请cookies时遇到问题,但我不明白我能做些什么来解决它。
我的代码:
public partial class Admin_LogIn : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["IvoucherCookieAdminPassword"] != null && Request.Cookies["IvoucherCookieAdminMail"] != null)
if ("***".Equals(Request.Cookies["IvoucherCookieAdminPassword"].Value.ToString()) && "***".Equals(Request.Cookies["IvoucherCookieAdminMail"].Value.ToString()))
Response.Redirect("Benvenuto.aspx");
}
protected void LoginButton_Click(object sender, EventArgs e)
{
if (UserTextBox.Text == "***" && PasswordTextBox.Text == "***")
{
Response.Cookies["IvoucherCookieAdminMail"].Value = UserTextBox.Text;
Response.Cookies["IvoucherAdminCookiePassword"].Value = PasswordTextBox.Text;
Response.Cookies["IvoucherCookieAdminMail"].Expires = DateTime.Now.AddHours(2);
Response.Cookies["IvoucherAdminCookiePassword"].Expires = DateTime.Now.AddHours(2);
Response.AddHeader("REFRESH", "0.1;Benvenuto.aspx");
}
else
{
GeneralErrorTextBox.Text = "Nome utente e/o password errata!";
}
}
}
所以我试过这个来解决它:
public partial class Admin_LogIn : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var adminuser = Request.Cookies["IvoucherCookieAdminMail"];
var adminpassword = Request.Cookies["IvoucherAdminCookiePassword"];
if (adminuser != null && adminpassword != null)
if ("***".Equals(Request.Cookies["IvoucherCookieAdminPassword"].Value.ToString()) && "***".Equals(Request.Cookies["IvoucherCookieAdminMail"].Value.ToString()))
Response.Redirect("Benvenuto.aspx");
}
protected void LoginButton_Click(object sender, EventArgs e)
{
if (UserTextBox.Text == "***" && PasswordTextBox.Text == "***")
{
Response.Cookies["IvoucherCookieAdminMail"].Value = UserTextBox.Text;
Response.Cookies["IvoucherAdminCookiePassword"].Value = PasswordTextBox.Text;
Response.Cookies["IvoucherCookieAdminMail"].Expires = DateTime.Now.AddHours(2);
Response.Cookies["IvoucherAdminCookiePassword"].Expires = DateTime.Now.AddHours(2);
Response.AddHeader("REFRESH", "0.1;Benvenuto.aspx");
}
else
{
GeneralErrorTextBox.Text = "Nome utente e/o password errata!";
}
}
}
但我总是收到以下错误:
对象引用未设置为对象的实例。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[NullReferenceException: Object reference not set to an instance of an object.] Admin_LogIn.Page_Load(Object sender, EventArgs e) +126 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1016
我该如何解决?
答案 0 :(得分:0)
当您尝试使用属性或调用null对象的方法时,会发生此错误。更多细节:
Visual Studio DEBUGGER的简单使用可以告诉您正在发生的对象。只需查看堆栈跟踪并将调试器放在该行上即可。检查该行的对象,看看是否有任何一个为null,并且您正在尝试使用该对象属性。处理相同。
答案 1 :(得分:0)
可能是错的,但看起来你错误地命名了一个你的cookie项目。你叫它:
var adminpassword = Request.Cookies["IvoucherAdminCookiePassword"];
但是在下一行中,您引用了IvoucherCookieAdminPassword
。
那么,是CookieAdminPassword
还是AdminCookiePassword
还是两者兼而有之?
答案 2 :(得分:0)
这是因为您没有设置为
的值Request.Cookies["IvoucherCookieAdminPassword"].Value **and** Request.Cookies["IvoucherCookieAdminMail"].Value
当你在 Page_Load 函数中检查它们时,当它们包含null时,在创建条件之前你必须设置它们的值。
在 .Equal()上查看更多详细信息,请参阅,http://msdn.microsoft.com/en-us/library/bsc2ak47(v=vs.110).aspx
阅读有关HttpRequest.Cookies Property的更多信息,请访问....
http://msdn.microsoft.com/en-us/library/system.web.httprequest.cookies(v=vs.110).aspx
快乐编码.......