问题是这样的:
  我们所有页面都是继承PageBase的,在PageBase中有一个方法,就是当你进入某个页面时,就会向一个表中把这个页面的配置数据插入进去,作为log来跟踪页面,大概就是这样吧,我们每个页面有配置权限的objectID的,这就不用多问了吧。进入主题,PageBase里的方法是:protected void CheckPagePermission(PermissionObjectID iObjectID, PermissionOperationID iOperationID, PERMISSIONMODE iMode)
        {            this.BHasPermission = HasPermission(iObjectID, iOperationID, iMode);
            string sEnableProgramTraceLog = CRM.SystemLibrary.Global.EnableProgramTraceLog;
            //0025498: SIS 3.0 - System - Trace User's Program Usage to monitor User's Usage for Main Page level only (without Button level) 
            //iOperationID为1则是页面级别的权限
            if (sEnableProgramTraceLog.ToUpper() == "YES" && BHasPermission && Convert.ToInt32(iOperationID) == 1 && oUserInfo != null)
            {
                //开启另外一个线程去执行插入log的方法
                Thread t = new Thread(new ThreadStart(delegate
                {
                    Common.AddProgramTraceLog(oUserInfo, iObjectID, iOperationID);
                }));
                t.Start();
            }
            CheckPagePermission(BHasPermission);
        }
我们这边两个测试环境都没有错,但是发布到产品后就会包错:
Only ID Production:
   at CRM.SystemLibrary.Common.AddProgramTraceLog(CRM.ClassInfo.AdminInfo.UserInfo, PermissionObjectID, PermissionOperationID)
   at CRM.UILayer.PageBase+<>c__DisplayClass2.<CheckPagePermission>b__0()
   at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
   at System.Threading.ExecutionContext.runTryCode(System.Object)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ThreadHelper.ThreadStart()这是什么鸟错误啊?看不懂啊,是不是线程开多了就会导致这样的错误啊?线程多的话,会导致数据库连接丢失么?还是其他原因啊,望大虾们指点迷津啊