• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[导入]ASP.net里的几个逻辑问题!

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


选看这样的一个例子:

  public void FindParentID(long int_ChildID,long[] arr_parIDs,int int_times)
  {
   SqlDataReader obj_dataReader;
   SqlCommand  obj_command  = new SqlCommand("select s_parID from t_cpyNewsSort where s_id="+int_ChildID.ToString(),this.obj_conn);
   obj_dataReader = obj_command.ExecuteReader();  
   if(obj_dataReader.Read())
   {
    long log_ParID = obj_dataReader.GetInt64(0);
    obj_dataReader.Close();
    this.TraceMsg(log_ParID.ToString());
    arr_parIDs.SetValue(log_ParID,int_times);
    if(log_ParID!=-1)
    {
     FindParentID(log_ParID,arr_parIDs,++int_times);
    }   
   }
   else
   {
    obj_dataReader.Close();
   }  
  }

这一句让我想了关半天也没想明白为什么要放在前面。这样试过,

  public void FindParentID(long int_ChildID,long[] arr_parIDs,int int_times)
  {
   SqlDataReader obj_dataReader;
   SqlCommand  obj_command  = new SqlCommand("select s_parID from t_cpyNewsSort where s_id="+int_ChildID.ToString(),this.obj_conn);
   obj_dataReader = obj_command.ExecuteReader();  
   if(obj_dataReader.Read())
   {
    long log_ParID = obj_dataReader.GetInt64(0);
        this.TraceMsg(log_ParID.ToString());
    arr_parIDs.SetValue(log_ParID,int_times);
    if(log_ParID!=-1)
    {
     FindParentID(log_ParID,arr_parIDs,++int_times);
    }   
   }
  obj_dataReader.Close();
  }

  结果是该函数不能迭代调用了。不理解,唯一的解释就是: obj_dataReader对像不是在迭代的时候重新建立的,而是在使用同一个对像。不明白这是为什么,难道程序的运行结构不再是原来的栈内存模式??

  还有这一个:

  private bool CheckUser()
  {
 FormsIdentity id = (FormsIdentity)User.Identity;
   if(User.Identity.IsAuthenticated)
   {
    FormsIdentity id = (FormsIdentity)User.Identity;
    FormsAuthenticationTicket ticket = id.Ticket;
    TraceMsg(ticket.UserData.ToString());
    string str_UserData = ticket.UserData;
    if(str_UserData.IndexOf("_027NetAdmin")!=-1)
    {
     str_adminPower = str_UserData.Substring(str_UserData.IndexOf(",")+1);   
     return true;
    }
    else
    {
     return false;
    }   
   }
   else
   {
    return false;
   }
  }

   FormsIdentity id = (FormsIdentity)User.Identity;上面的两个换位置后也出现错误,这个我好理解,因为如果用户没有取得认证的时候,显示Identity是不存在的,当然也就不可能给FormsIdenity赋值了。但我郁闷的是MSDN上的示例就是那样做的。说明一个问题:MS自己都不是很清楚这些个Framework的完整结构,所以它里面也是有错误的(逻辑错误),也就更别说第三方公司提供的一些示例了,所以最后决定了:只能相信自己了。


文章来源:http://computer.mblogger.cn/wucountry/posts/44262.aspx

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net网站配置工具,点“安全”选项卡出错发布时间:2022-07-10
下一篇:
[转]在Apache环境下成功的运行ASP.NET发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap