《ASP.NET的一些坑》的人造坑,真不是微软问题,是你的理解问题

仅说两点,实现看得蛋疼,说一下。因为出现在首页,所以就有此文。

摘录一段微博,尽量避免在技术理解错方向性问题:真不是微软问题,是你的理解问题。

“清晰的思路远比埋头苦干重要,正确的方向要比勤勤恳恳重要,做对的事情也比把事情做对重要。

常常在评价人、事时,去评价那些表面的现象,忽略了内涵。

最终,导致哪些真正有价值的人和事情被冷落了,而那些金玉其外败絮其中的东西被吹捧了出来!”

 

一、没有理解什么叫多线程,所以下述的结论都是错的

*****************************

在以下情形中访问HttpContext.Current将会返回null
1. 定时器的回调。
2. Cache的移除通知。
3. APM模式下异步完成回调。
4. 主动创建线程或者将任务交给线程池来执行。

*************************************

正确应是:在以下情形中,HttpContext.Current为null,不是坑,原本就如此

二、基本概念都没搞清

*****************************
QueryString,Form允许重复的KEY????

不是这样表达的吧?

字典类能允许重复的KEY,请求串中的参数名能叫Key?

*************************************

正确应是:请求串中允许相同的参数名,其值在QueryString中以“,”分隔表示。
  QueryString不会存在重复的KEY。请别误导大家。

原文:http://www.cnblogs.com/fish-li/archive/2013/05/28/3104750.html

部分摘录:

前段时间碰到一个问题:为什么在ASP.NET程序中定时器有时候会不工作?

这个问题看起来很奇怪,代码好像也没错,但就是结果与预期不一致。
其实这里是ASP.NET程序的一个陷阱,我习惯说成坑。 后来想想,其实ASP.NET的坑何止这一个,我今天就把我能想到的各种坑都写出来,希望大家小心这些问题。

想到我以前的博客中也零散的说过了一些坑,所以这篇博客中也把它们列出来了, 不过,对于以前谈过的内容,这里将只会简略地说明。

HttpContext.Current并非无处不在

这个问题是我上个月的博客中提到的问题, 原文链接:http://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html

在以下情形中访问HttpContext.Current将会返回null
1. 定时器的回调。
2. Cache的移除通知。
3. APM模式下异步完成回调。
4. 主动创建线程或者将任务交给线程池来执行。

所以,在写类库时,请注意这个问题。

Application_Start的异常与IIS经典模式

在IIS6或者II7的经典模式下运行ASP.NET程序时,如果Application_Start事件中抛出了未捕获异常, 那么 这个异常将显示一次。

关于这个问题的更多细节介绍请点击:http://www.cnblogs.com/fish-li/archive/2013/03/24/2979780.html

QueryString,Form允许重复的KEY

我们经常见到的集合,例如:Hashtable, Dictionary,它们都要求KEY是唯一的,然而, HttpRequest的QueryString,Form集合实例却 允许KEY重复,当遇到KEY重复时,通过索引器访问集合时, 会将KEY对应的所有元素值用逗号拼接起来。

为什么会这样,因为这二个集合的类型是NameValueCollection,类似的,Headers集合也是这样。

由于这个特殊性与我们常见的情形不一致,所以我们需要注意这个差别,当然了,有些时候我们还可以利用这个行为实现一些特殊的需求, 关于这个细节的更多介绍请参考:http://www.cnblogs.com/fish-li/archive/2011/12/06/2278463.html , 在这篇博客中,还介绍了HttpRequest的二个索引器也是值得我们注意的。

原文地址:https://www.cnblogs.com/fjwuyongzhi/p/3104929.html