请求cookie的ASP.NET C#System.NullReferenceException

时间:2014-01-08 09:48:48

标签: c# asp.net .net cookies nullreferenceexception

我在申请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

我该如何解决?

3 个答案:

答案 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

快乐编码.......