在ASP.NET中的web应用程序中使用多个cookie

本文关键字:cookie 应用程序 ASP NET 中的 web | 更新日期: 2024-09-24 08:11:21

我的web应用程序中有cookie来存储用户语言。我在中创建这个cookie

应用程序注册请求&应用程序启动

在我的global.asax文件中,代码为:

Response.Cookies["IPortalCookies"]["Language"] = "en";
                        Response.Cookies["IPortalCookies"]["Direction"] = "ltr";
                        Response.Cookies["IPortalCookies"].Expires = DateTime.Now.AddYears(1);

现在我需要创建另一个cookie来为每个用户存储点赞:

int articleid = Convert.ToInt32(e.CommandArgument);
        //    var _ah = new ArticlesHelper();
        //    if (Request.Cookies["IPortalCookies"] != null)
        //    {
        //        if (Request.Cookies["IPortalCookies"]["Likes"] == null || Request.Cookies["IPortalCookies"]["Likes"].Contains("'" + articleid + "'") == false)
        //        {
        //            if (_ah.LikeIt(articleid))
        //            {
        //                Response.Cookies["IPortalCookies"]["Likes"] = Request.Cookies["IPortalCookies"]["Likes"] + ",'" + articleid + "'";
        //                BindRepeater();
        //            }
        //        }
        //    }

但是当点赞cookie创建时,其他cookie将消失,我会得到这个错误:

String reference not set to an instance of a String.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.ArgumentNullException: String reference not set to an instance of a String.
Parameter name: name
Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace: 

[ArgumentNullException: String reference not set to an instance of a String.
Parameter name: name]
   System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride) +14174389
   PortalCore.Global.Application_BeginRequest(Object sender, EventArgs e) +1093
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165

在ASP.NET中的web应用程序中使用多个cookie

我不知道是哪一行抛出了这个错误

但是我可以猜测下面的行得到错误吗

if (Request.Cookies["IPortalCookies"]["Likes"] == null || Request.Cookies["IPortalCookies"]["Likes"].Contains("'" + articleid + "'") == false)
        //        {
        //            if (_ah.LikeIt(articleid))
        //            {
        //                Response.Cookies["IPortalCookies"]["Likes"] = Request.Cookies["IPortalCookies"]["Likes"] + ",'" + articleid + "'";
        //                BindRepeater();
        //            }
        //        }

你需要检查不等于空

Request.Cookies["IPortalCookies"]["Likes"] != null

在尝试获取cookie的值之前,您应该确保cookie存在;如果cookie不存在,您将得到一个NullReferenceException异常。