本帖最后由 scofone 于 2009-07-18 12:35:46 编辑

解决方案 »

  1.   

    当出错的时候地址栏URL中有无ID参数,是否显示有值?错误提示是什么?
      

  2.   

    提示Asc_Movie_Divers里的MID获取的值输入格式出错,URL中肯定有参数,而且有值,自己测试过~,开始正常的,运行一段时间后出现这样的状况
      

  3.   

    if(Request["id"]!=null)
    {
        Request["id"].ToString().Trim(),
    }
      

  4.   

     if (Request["id"] != null....一般是放在if (!IsPostBack)外面的
      

  5.   

    把Asc_Movie_Divers里的MID得之输出来看看是不是期望的类型
      

  6.   

    id默认值为0,是否传递的值格式不正确,通过int.TryParse判断
    应该是用户传值问题
      

  7.   

    有默认值也应该不会有问题啊,就是运行一段时间后偶尔出现这样的问题,是不是在Repeater里不能再使用UC控件,因为在用户控件里还有打开数据库,输出内容
      

  8.   

    IsPostBack是Page类的一个属性,返回值为一个布尔值。一般放在Page_Load事件中。当页面是第一次打开时其值为False,若当前页面为一个提交后的页面其值为True.通俗的说就是当你的叶面第一次登录时会调用if(!IsPostBack){}中的语句,而在此页面未被关闭之前再次进入该页面时(例如,用back<-返回该页面则{}中的语句不会再被调用;很有可能是这里的问题。另外,类型转换不要直接给request.querystring[],如果取不到值,操作就会报错,可以先付给一个string,判断不为空之后再操作。
      

  9.   

    Request["id"] != null && System.Text.RegularExpressions.Regex.IsMatch(Request["id"].ToString().Trim(), @"^[\d,]+$") == true这个就能鉴定他不是空了,我试试,想想也是载入的问题,但在Repeater中再调用使用同访问类打开数据库的用户控件有没有问题?
      

  10.   

     if (Request["id"] != null && System.Text.RegularExpressions.Regex.IsMatch(Request["id"].ToString().Trim(), @"^[\d,]+$") == true)
                {
                    id = Convert.ToInt32(Request["id"].ToString().Trim());
                }            if (!IsPostBack && id>0)
                {
                    //this.updateViewTimes();
                    this.inital();
                    
                }调整后还出现同样的问题.说Asc_Movie_Divers得不到值,再刷新连ID也获取不到了,郁闷啊,报错误如下:“/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------输入字符串的格式不正确。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [FormatException: 输入字符串的格式不正确。]
       System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +2755599
       System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +112
       System.Int32.Parse(String s) +20
       CNNB_HD.Divers..ctor(String iid) in F:\A\App_Code\Divers.cs:36
       CNNB_HD.Asc_Movie_Divers.SetData() in F:\A\WebControl\Asc_Movie_Divers.ascx.cs:63
       CNNB_HD.Asc_Movie_Divers.Page_Load(Object sender, EventArgs e) in F:\A\WebControl\Asc_Movie_Divers.ascx.cs:31
       System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
       System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
       System.EventHandler.Invoke(Object sender, EventArgs e) +0
       System.Web.UI.Control.OnLoad(EventArgs e) +99
       System.Web.UI.Control.LoadRecursive() +47
       System.Web.UI.Control.LoadRecursive() +131
       System.Web.UI.Control.LoadRecursive() +131
       System.Web.UI.Control.LoadRecursive() +131
       System.Web.UI.Control.LoadRecursive() +131
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436
      

  11.   

    http是无状态的,在page_load里得到id的值,页面回发后,id的值很可能为空。
    解决的方法有:
    每次要使用id的值都从url里重新取得;
    或者使用viewstate,比如在page_load里 viewstate["id"] = id; 在其他方法里到使用id的值的时候 id = (int)viewstate["id"];
    asp.net默认情况下每次页面回发后控件的值能保持不变,就是使用viewstate来保持状态的。另外建议转换整数时使用int.tryparse,保证id含有非法字符时页面也不报错,而是返回0。
      

  12.   

    经修改后,如下代码,还是会出现这个问题,奇了怪了,郁闷.麻烦知道的帮我看看,谢谢,在线等
    protected void Page_Load(object sender, EventArgs e)
            {
                string tid = string.Empty;
                if (Request["id"] != null)
                {
                    tid = Request["id"].ToString().Trim();                if(System.Text.RegularExpressions.Regex.IsMatch(tid, @"^[\d,]+$") == true)
                    {
                        if(int.TryParse(tid, out id))
                        {
                            ViewState["mid"] = id;
                        }
                    }
                }
                if (!IsPostBack)
                {
                    //this.updateViewTimes();
                    this.inital();            }
      

  13.   

    是不是这个东西的问题???
    用了IDisposable接调用GC垃圾回收站
            public void Dispose()
            {
                GC.SuppressFinalize(this);
            }