嘿伙计们,当我尝试将CartID分配给字符串时,我收到此错误。非常感谢任何帮助。感谢
private static string CartID
{
get
{
HttpContext cont = HttpContext.Current;
string id = cont.Request.Cookies["ShopCartID"].Value;
if (cont.Request.Cookies["ShopCartID"] != null)
{
return id;
}
else
{
id = Guid.NewGuid().ToString();
HttpCookie cookie = new HttpCookie("ShopCartID", id);
int days = 7;
DateTime currentDate = DateTime.Now;
TimeSpan timeSpan = new TimeSpan(days, 0, 0, 0);
DateTime expiration = currentDate.Add(timeSpan);
cookie.Expires = expiration;
cont.Response.Cookies.Add(cookie);
return id.ToString();
}
}
}
答案 0 :(得分:1)
你的问题中没有CartID
(除了课程本身),所以我认为你的意思是ShopCartID
。
cont.Request.Cookies["ShopCartID"]
可以返回null
。您无法在Value
引用上呼叫成员(在本例中为null
)。您必须首先检查Cookie是否为null
:
HttpCookie cookie = cont.Request.Cookies["ShopCartID"];
string id = cookie != null ? cookie.Value : null;
修改强>
这种模式非常普遍,我的公共代码库已定义:
public static class ObjectExtensions
{
public static TResult IfNotNull<TValue, TResult>(this TValue value, Func<TValue, TResult> @delegate)
where TValue : class
{
if (@delegate == null)
{
throw new ArgumentNullException("delegate");
}
return value != null ? @delegate(value) : default(TResult);
}
}
像这样使用:
string id = cont.Request.Cookies["ShopCartID"].IfNotNull(arg => arg.Value);
答案 1 :(得分:0)
尝试在访问cookie值之前进行空检查。目前,您的代码调用cont.Request.Cookies [“ShopCartID”]。值,如果cookie不存在则会失败。