《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的二個索引器也是值得我們注意的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM