问题
func1 有query1, func2 有query2 执行顺序是 func1->func2 ,现在的问题是func2里面的query2 拿到的是
func1的query1 的查询结果 ,数据串了!
问题出现的时间点:每天早上,第一个用户访问系统的时候,而且出现了这个问题之后就会
一直有这个问题,要么覆盖bin或者修改配置文件之后才能恢复正常访问
服务器及数据库配置:阿里云主机,iis 服务器,数据库 sql server 2012
服务器应用部署方式:多个站点,每个站点都是用同一套系统,只是分开部署,db是部署在db服务器,并不是跟应用服务部署在一起,
出现问题的地方:出现在微信公众号用户网页验证的回调接口,简单的说:就是获取用户的在当前公众号下的openId
代码
///func1
protected OA_WeixinOauthTokenEntity Get_token(string Code, string SchoolCode)
{
var weixinAccount = new WeixinUserService().GetWeixinAccount(SchoolCode);//query1
if (weixinAccount == null)
{
return null;
}
else
{
var AppID = weixinAccount.WechatAppid;
var AppSecret = weixinAccount.WechatAppsecret;
var urlStr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppID + "&secret=" +
AppSecret + "&code=" + Code + "&grant_type=authorization_code";
var helper = new HttpHelper(urlStr);
var strJson = helper.SendHttpRequst();
var Oauth_Token_Model = JsonOperate.FromJson<OA_WeixinOauthTokenEntity>(strJson);
return Oauth_Token_Model;
}
}
///func2
public string CheckIsAuthen(string OpenID, string UserType)
{
var strUserID = "";
if (!"".Equals(OpenID))
{
//1. 老师,2学生,3家长
var strTable = "PIUser";
if (UserType == "2") strTable = "PIStudent";
if (UserType == "3") strTable = "PIParent";
var sql = " SELECT UserID FROM " + strTable + ",OA_WeixinToUser WHERE " + strTable +
".ID = UserID AND OA_WeixinToUser.OpenID= '" + OpenID + "' And OA_WeixinToUser.UserType = " +
UserType + " And DELETEMARK=0 And ENABLED=1";
Const.WriteJobTxt("sql:" + sql, "CheckIsAuthen_v2");
DataSet ds = DbHelperSQL.Query(sql);//query2
DataTable dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
try
{
Const.WriteJobTxt("ds.count=" + ds.Tables.Count + "|dt:" + JSONhelper.ToJson(ds), "CheckIsAuthen_v2");
strUserID = PublicMethod.ObjectToStr(dt.Rows[0]["UserID"]);
}
catch (Exception ex)
{
Const.WriteBugLog(ex);
throw ex;
}
}
}
return strUserID;
}
日志文件
错误提示
尝试解决
1,初步猜测是并发导致的,但是经过分析日志文件,觉得不太可能,同一时间段访问量并不大,而且,时间间隔也是到3 ,4秒以上
2,数据库帮助类的query 使用的静态方法,后来把全部静态方法修改了之后还是会出现这个问题。所以排除这个问题
现在还是没有找到问题的解决方案,如果有某位大神看到这篇文章,并有遇到相似的问题。不妨讨论讨论,如果有解决方案那就更好不过了