ye_ibl 2017-09-28 04:38 采纳率: 0%
浏览 907
已结题

sql C# 数据怎么就窜了

问题

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 使用的静态方法,后来把全部静态方法修改了之后还是会出现这个问题。所以排除这个问题

现在还是没有找到问题的解决方案,如果有某位大神看到这篇文章,并有遇到相似的问题。不妨讨论讨论,如果有解决方案那就更好不过了

  • 写回答

2条回答 默认 最新

  • 自带风的一匹狼 2017-09-29 01:23
    关注

    比对一下sql操作语句与数据库的表结构

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大