很奇怪的问题,是一个存储过程报的错误
SqlParameter[] NoteParams = new SqlParameter[7];
NoteParams[0] = new SqlParameter("@UserID",str_JoinUserID);
NoteParams[1] = new SqlParameter("@GroupID",int_GroupID.ToString());
NoteParams[2] = new SqlParameter("@NoteTitle",str_NoteTitle);
NoteParams[3] = new SqlParameter("@NoteBody",str_NoteBody);
NoteParams[4] = new SqlParameter("@LastIP",Request.UserHostAddress);
NoteParams[5] = new SqlParameter("@GroupUserPower","5");
NoteParams[6] = new SqlParameter("@NoteID",SqlDbType.Int);
NoteParams[6].Direction = ParameterDirection.Output;
SqlHelper.ExecuteNonQuery(ZS_Config.ConnStr,CommandType.StoredProcedure,"SP_AddNote",NoteParams);主要问题应该是NoteBody这个参数,是nText类型的,用户在使用的时候有时会报这个错误,比例非常小,但是每天会有4-5次错误产生。基本排除是超长引起的,因为长度都做了控制。唯一一次本地的重现是发现如果str_NoteBody中出现了一段javascript脚本,则会出错,可是后来又无法重现了。不知道有没有朋友碰到过类似的问题。
SqlParameter[] NoteParams = new SqlParameter[7];
NoteParams[0] = new SqlParameter("@UserID",str_JoinUserID);
NoteParams[1] = new SqlParameter("@GroupID",int_GroupID.ToString());
NoteParams[2] = new SqlParameter("@NoteTitle",str_NoteTitle);
NoteParams[3] = new SqlParameter("@NoteBody",str_NoteBody);
NoteParams[4] = new SqlParameter("@LastIP",Request.UserHostAddress);
NoteParams[5] = new SqlParameter("@GroupUserPower","5");
NoteParams[6] = new SqlParameter("@NoteID",SqlDbType.Int);
NoteParams[6].Direction = ParameterDirection.Output;
SqlHelper.ExecuteNonQuery(ZS_Config.ConnStr,CommandType.StoredProcedure,"SP_AddNote",NoteParams);主要问题应该是NoteBody这个参数,是nText类型的,用户在使用的时候有时会报这个错误,比例非常小,但是每天会有4-5次错误产生。基本排除是超长引起的,因为长度都做了控制。唯一一次本地的重现是发现如果str_NoteBody中出现了一段javascript脚本,则会出错,可是后来又无法重现了。不知道有没有朋友碰到过类似的问题。
str_NoteBody=Server.HtmlDecode(str_NoteBody)
NoteParams[0] = new SqlParameter("@UserID",str_JoinUserID);
NoteParams[1] = new SqlParameter("@GroupID",int_GroupID.ToString());
NoteParams[2] = new SqlParameter("@NoteTitle",str_NoteTitle);
NoteParams[3] = new SqlParameter("@NoteBody",str_NoteBody);
NoteParams[4] = new SqlParameter("@LastIP",Request.UserHostAddress);
NoteParams[5] = new SqlParameter("@GroupUserPower","5");
NoteParams[6] = new SqlParameter("@NoteID",SqlDbType.Int);
NoteParams[6].Direction = ParameterDirection.Output;最好改成:
SqlParameter[] NoteParams = new SqlParameter[7];
NoteParams[0] = new SqlParameter("@UserID",SqlDbType.VarChar);
。。
NoteParams[0].Value = str_JoinUserID;