首页 > 技术文章 > (原)C sharp杂谈记事(一)

bfchuan 2014-09-13 12:27 原文

题记)最是那一低头的温柔,像一朵睡莲花不胜凉风的娇羞

 

1)接收

  公司的X部门有个APP小项目,APP后台是C sharp的MVC,提供了一个C sharp的web from做管理员操作的后台操作,此项目是一个实习生写的,也不属于我这边,因此我对此了解是透明的,后来实习生没来了,于是这一堆从Android到wp到IOS到后台的BUG全部丢到我这了。

  得说点题外话,现在很多大学生抱怨找不到工作,但是很多找到工作的学生,人品真的不咋的,记得去年,那工作环境是相当的巴士,早9晚6,从不加班,周末从来双修,按时出去旅游,后来公司一气招了5个实习生,这些实习生,干了一段时间,招呼不打,直接就不来上班了, HR妹妹打电话问,直接就说不来上班了,然后让其归还门禁卡,后来没有下文了。

  对C sharp没有深入研究过,这次到手一个项目,想自己搞一下,有源码在手,有MSDN在那放着,还不能征服你个小小的C sharp,何惧之有?于是我卯足了劲,根据BUG列表,一个劲的在MSDN上来回扫,放在其他语言中,这些bug就是一些入门的问题,然对C sharp没有深入过,也的慢慢来。

  1):整个管理员登录的后台Web系统全部无法实现更新操作

    解决:C sharp有个Page_Load,这个方法我觉得很奇葩,因为每次页面加载会执行这个方法,于是这里显示了页面详情,表单的post提交会再次执行这个方法,然后才提交表单,正因为提交表单的时候,执行了这个方法,input里面的值被数据库的值给替换了,导致数据被覆盖,于是看了MSDN里面,微软的处理方法是判断是否是第一次调用这个方法:

    

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ShowData();  //显示页面详情
        }
    }

  没有想明白在POST之前再次调用这个方法有什么意义。

 

  2)奇葩的数据,因为我看的是后台的MVC代码,并没有去生成APP客户端,APP的后台是MVC模式,客户端通过HTTP请求,返回JSON,于是从登录入手熟悉代码,整个登录流程功能倒是没啥问题,就是实现的太扯蛋了,从数据库一看:

  

  第一个念头是这玩意儿使用的啥加密方式,浏览了3次代码,没有发现可疑的加密的地方,登录验证是用存储过程实现,基本就是很简单的几句,于是我转念一想,难道。。。。

 

  

  很实在的插入一条,我靠,还真是,数据库没有加密,这串看着像密文的东西就是明文入库,现在写代码的小朋友,实在是不该啊,好歹MD5一下成不。

 

  3)在给我处理了1 mol的问题之后,活动专题有个地方,无法修改,于是再次卯足劲看问题,发现这个地方是抛了SQLException,异常信息:

    

e:过程或函数 'PR_Action_UpdateActionByActionID' 需要参数 '@ActionAddress',但未提供该参数。

  说的很明确,没有赋值,再次看代码:

  

  问题就在这个地方,这里的参数的名称没有写对,也就是给一个数据库不存在的字段赋值,传递给了存储过程,这报错也太奇葩了,不报错该字段不存在,报字段未赋值。

   这些因为人不仔细的问题坑死人啊。。

 

后记)基本耗时一天把整个后台的问题基本处理了,然后丢到线上,客户那边是抱怨不已,登录不进去,无法注册,速度太慢,速度是因为使用第三方模块的UI,模块里加载了很多google的css,加入第三方模块的人不太熟悉,没有去掉,导致整个系统到处慢的要命。

 

PS:总体来说C sharp还是不错,写起来有手感,会j2ee再来搞C shrap门槛很低,我就在想,做一个软件,将java代码做个大小写转换,然后java代码就可以变成C sharp了。。

有空研究下这个。

推荐阅读