簡體   English   中英

請求Cookie的ASP.NET C#System.NullReferenceException

[英]ASP.NET C# System.NullReferenceException on requesting cookies

請求Cookie時遇到問題,但是我不知道該怎么辦才能解決。

我的代碼:

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

我該如何解決?

當您嘗試使用屬性或調用對象的方法為null時,會發生此錯誤。 更多細節:

簡單地使用Visual Studio DEBUGGER可以告訴您該對象正在發生的原因。 只需查看堆棧跟蹤,然后在該行上放置調試器即可。 檢查該行的對象,看看是否有任何一個為空,並且您正在嘗試使用該對象屬性。 處理相同。

可能是錯誤的,但是您似乎錯誤地命名了一個Cookie項目。 您稱它為:

var adminpassword = Request.Cookies["IvoucherAdminCookiePassword"];

但是在下一行,您引用IvoucherCookieAdminPassword

那么,它是CookieAdminPassword還是AdminCookiePassword還是兩者都是?

這是因為您未設置

Request.Cookies["IvoucherCookieAdminPassword"].Value **and** Request.Cookies["IvoucherCookieAdminMail"].Value

當它們在Page_Load函數中檢查它們是否包含null時,在設置條件之前必須設置它們的值。

要查看有關.Equal()的更多詳細信息,請參閱,
http://msdn.microsoft.com/zh-cn/library/bsc2ak47(v=vs.110).aspx有關HttpRequest.Cookies屬性的更多信息,請訪問...。
http://msdn.microsoft.com/zh-CN/library/system.web.httprequest.cookies(v=vs.110).aspx

編碼愉快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM