《ASP.NET的一些坑》的人造坑,真不是微軟問題,是你的理解問題ASP.NET的一些坑

來源:互聯網
上載者:User

僅說兩點,實現看得蛋疼,說一下。因為出現在首頁,所以就有此文。

摘錄一段微博,盡量避免在技術理解錯方向性問題:真不是微軟問題,是你的理解問題。

 

“清晰的思路遠比埋頭苦乾重要,正確的方向要比勤勤懇懇重要,做對的事情也比把事情做對重要。

常常在評價人、事時,去評價那些表面的現象,忽略了內涵。

最終,導致哪些真正有價值的人和事情被冷落了,而那些金玉其外敗絮其中的東西被吹捧了出來!”

 

 

一、沒有理解什麼叫多線程,所以下述的結論都是錯的

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

在以下情形中訪問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的一些坑

閱讀目錄

  • 開始
  • HttpContext.Current並非無處不在
  • Application_Start的異常與IIS傳統模式
  • QueryString,Form允許重複的KEY
  • ashx的重用問題
  • 當前登入使用者資訊有時擷取不到
  • Timer可能會不起作用
  • Session與複雜資料類型
  • DateTime的JSON序列化
  • 招聘資訊

前段時間碰到一個問題:為什麼在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的二個索引器也是值得我們注意的。

 

閱讀目錄

  • 開始
  • HttpContext.Current並非無處不在
  • Application_Start的異常與IIS傳統模式
  • QueryString,Form允許重複的KEY
  • ashx的重用問題
  • 當前登入使用者資訊有時擷取不到
  • Timer可能會不起作用
  • Session與複雜資料類型
  • DateTime的JSON序列化
  • 招聘資訊

前段時間碰到一個問題:為什麼在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的二個索引器也是值得我們注意的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.