你检查一下Request.Cookies["UserID"]里是否有值
有值,以前都可以的,昨天调试的时候就出问题了,数据库也没动
@bindot: 你这里是是guid类型的,你转换为int类型,应该是有问题的
@artwl: 那我如果要得到这个值应该怎么做?
@bindot: int id=改为 Guid id=或 var id=
@artwl: 应该是这个问题但是怎么结贴啊
跟踪一下就知道了Request.Cookies["UserID"]里面应该是 空字符串,或者不是数字
跟踪了Request.Cookies["UserID"]里面应该是 数字,而且不是空的
@bindot: 看了你的截图,本来就不是数字,切长度也太长了!
可能不是整數。int i=0;
最好這樣做:
int i = 0;
if (int.TryParse(Request.Cookies["UserID"].Value, out i)) {
}
没有int.TryParse(Request.Cookies["UserID"].Value, out i)这个重载方法tryparse(string,out int)
@bindot: 沒有。不可能哦。這個是系統自帶的。
@無限遐想: 還有。你的數值不是整數哦。
接收到的Request.Cookies["UserID"]可能不能,转换为int类型.设置断点,查看一下接收到的是什么值.
有值,请看截图
@bindot: 明显你这个不是整数,怎么进行解析?
是在运行时的错误吗?
那就是你的Cookies并没有正确获取到UserID这个对象,因此,Value返回的是一个null或empty值,在使用Int.Parse的时候会报告这个错误。当然,如果是别的字符串也会出现类似的问题(只要不是有效的字符串)。
建议你:
1——
先判断Cookie是否有值,然后在调用int.Parse方法。
2——
使用int.TryParse这个方法。(当然,这个方法在写代码上要简单点,只是性能消耗上也比第一个方案要多)
3——
使用try-catch捕获处理,这个方案的效率比第二个更低。
你看看那个Value 值,是字符串哦,是不能转换为int型的,得这样:string id = Request.Cookies["UserID"].value;
将value用Response.Write("");输出来看看值不就知道了嘛
嗯,我也觉得是你的值太长,超出了int类型的范围了