[英]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.