爲了避免錯誤「集合在枚舉器被實例化後被修改」 我發現了許多建議,以便在通過Request.ServerVariables.Keys循環之前使用以下行收藏:集合在枚舉器實例化後被修改 - Request.ServerVariables
IEnumerator en = Request.ServerVariables.Keys.GetEnumerator();
en.MoveNext();
望着MSDN example,他們設置了服務器變量的集合,然後通過該集合迭代,而不調用的GetEnumerator和MoveNext的。
兩個問題:
- 爲什麼我們需要調用的GetEnumerator和MoveNext的?
- 如果使用ASP.NET和C#4.0,哪種方法更好?
這就是導致其他網站上提到的錯誤,如:http://geekswithblogs.net/congsuco/archive/2006/01/26/67123.aspx – Josh 2012-01-10 14:48:09
我已經更新了類似於ivowiblo建議的代碼,即將鍵數組複製到一個變量,然後查看鍵。如果您想保留循環開始時的值,您也可以使用Request.ServerVariables.CopyTo在循環之前將鍵/值對複製到不同的數組中。 – 2012-01-10 14:53:09