我在調試ASP.Net應用程序時遇到了一個非常奇怪的問題。它似乎發生在某個班級內的所有功能上。還有,我懷疑都是相關的幾個問題:調試ASP.Net應用程序 - 跳過沒有命中的行和斷點
- 功能裏面斷點被忽略,但如果我之前將斷點調用該函數,然後F11一步我可以調試功能正常。
- 如果我附加調試器,然後添加一個斷點,它會添加它(儘管它會被忽略,如上所述),只要代碼沒有被執行。一旦函數被調用,如果我嘗試添加一個斷點,visual studio會提供一個錯誤「以下斷點不能設置...公共語言運行時無法設置斷點
在調試某些線似乎得到完全跳過例如,考慮下面的功能:。
public GetCareersParametersByCriteriaResponse GetCareersParametersByCriteria(GetCareersParametersByCriteriaRequest request) { var response = new GetCareersParametersByCriteriaResponse { CareersParameters = new List<CareerParametersView>() }; var predicate = PredicateBuilder.True<CareerView>(); if (!request.IncludeExcludeTop20Careers) { predicate = predicate.And(c => !c.ExcludeTop20); } predicate = predicate.And(c => c.EducationMinimumLevel <= request.MinimumEducationLevel && c.EducationMaximumLevel >= request.MaximumEducationLevel); var careerIds = _careerLibrary.Careers.AsQueryable().Where(predicate).Select(c => c.CareerId).Distinct(); foreach (var careerId in careerIds) { response.CareersParameters.Add(_careerLibrary.CareerParametersLookup[careerId]); } response.IsSuccess = true; return response; }
看來,跳過分配到「謂語」和值顯示爲空但是行後,增加了教育分鐘/ max仍然執行,但謂詞的值保持爲空,從那裏跳過直接到 t他在沒有分配職業標準的情況下進行foreach,看起來沒有在迭代器上調用下一步。結果,careerId沒有被分配一個值(因此有0)並拋出錯誤,因爲0不是有效的ID。
注意:即使0是無效的id並導致'給出的鍵不存在於字典'異常被拋出,函數繼續執行並執行返回。此時,調試器完全消失(不返回到調用函數),並且一切似乎都被鎖定(即,頁面從不加載等),直到我將調試器分離並且它給出了死亡的黃色屏幕。
事情我已經嘗試:
- 清洗液
- 重建解決方案
- 手動刪除在bin文件夾
- 所有DLL和PDB文件重新啓動Visual Studio的
- 重啓
- 確保「優化代碼」已禁用
- 確保多個線程不同時調用該函數
- 修改代碼文件並確保它檢測到更改以確保它正在運行最新版本。它是。 (還打開了Debug> Windows> Modules並檢查了pdb上的時間戳 - 它是最新的)
- 刪除位於C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP的DLL的IIS副本。 NET文件
- 清除符號緩存
- 完全重新安裝VS2012和所有插件(例如ReSharper的)
它似乎開始安裝VS2012更新4後立即發生,但我不能在網上找到關於更新後,任何像這樣的問題,任何事情,並重新安裝VS沒有幫助所以這可能是巧合
更新:在調試時得到一條消息,說明源代碼與C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files ...中的dll不同(即代碼的IIS副本)我想我可能會做點什麼。但是,刪除那些後它仍然沒有區別可言,所以補充說,事物的名單我已經試過
更新2:完全重新安裝VS2012,因爲我懷疑的更新可能會出現故障。但是仍然沒有喜悅,同樣奇怪的行爲
更新3:經過進一步調查中,我似乎得到了同一個項目/組件內的所有類一樣奇怪的問題(溶液中的其它項目都很好)這表明項目水平設置某處。開放的:-)
更新所有建議4:試過清除符號高速緩存器在工具>選項>調試>符號
更新5:從頭嘗試重新安裝VS2012 - 仍然沒有喜悅
我已經檢查模塊窗口問題的唯一的事情 - 顯示所有相關的符號被加載和時間戳正確對應於最後構建時間 – Anduril