2014-12-29 70 views
14

我正在使用Visual Studio 2013中的ASP.NET解決方案無法觸及斷點。 Visual Studio將成功打破其他解決方案的斷點,並且此解決方案中的斷點以前的工作。但在這個時候他們失敗了。Visual Studio 2013未觸及斷點

我正在使用Visual Studio 2013 Ultimate,Update 4.它安裝在Windows 8.1,64位上。

這是一個包含3個項目的MVC解決方案:BusinessEntities,DataAccessLayer(DAL)和一個Web項目。所有這些項目的斷點失效。我甚至在家用控制器的Index ActionResult內部嘗試了一個斷點,但仍然無法在斷點處停下來。

在Visual Studio功能區中,解決方案配置設置爲「調試」。另外,配置管理器顯示我的所有3個項目都有一個配置設置爲調試。重新啓動IIS,重新啓動Visual Studio並重新啓動不能解決此問題。選擇生成>清理解決方案,生成>重建,然後調試>開始調試也沒有解決它。

在web.config中,調試設置爲true在此節點:

<system.web> 
     <compilation debug="true" targetFramework="4.0" /> 

有在我的項目的bin目錄.pdb文件。我確認在清理解決方案時它們會被刪除,並在重建時重新創建。

我還需要檢查什麼?我真的需要得到在這個解決方案中工作的斷點。謝謝。

========

更新對2014年12月30日 - 以下是幾件事情,我想,從以下@ paul.abbott.wa.us意見。爲了清楚起見,我所做的幾條評論被刪除並且僅僅附在這裏

========

我開始通過VS應用程序,並在IIS下運行它。 IIS的版本是8.5。當公開進程名稱(通過System.Diagnostics.Process.GetCurrentProcess()。ProcessName)時,它是w3wp。

在IIS中,Web應用程序具有類似「local.mysite」的站點名稱,並且在我的主機文件中有一個匹配條目。該站點使用DefaultAppPool,它使用.NET CLR版本4.0和集成管理流水線模式。我的解決方案中的3個應用程序以.NET Framework 4爲目標。

如果將其切換回IIS Express,調試器將開始工作。 IIS的版本更改爲8.0,並且進程名稱當然是iisexpress。從技術上講,我不需要在我的工作站上的IIS下運行它,但我寧願這樣做。我在IIS中配置錯誤或忽略了哪些可能會導致調試器失敗的原因?

回顧屬性頁的Web選項卡上的項目服務器設置,我注意到下拉列表被設置爲「IIS Express」。切換到「本地IIS」後,系統提示我以管理員身份運行VS。這樣做後,我能夠將服務器更改爲本地IIS,然後點擊調試器。我檢查了更改,關閉了VS,啓動了VS,沒有以Admin身份運行,並加載瞭解決方案。 Web項目無法加載以下消息:Web應用程序項目[MySiteName]被配置爲使用IIS。無法訪問IIS元數據庫。您沒有足夠的權限訪問您計算機上的IIS網站。

本網站的某些部分最終將採用Active Directory身份驗證。那麼,我需要在IIS Express下運行該站點的解決方案,還是如果我希望在IIS下運行該站點,則始終以管理員身份運行VS?謝謝。

我找到了一個解決方案,可以通過「Web應用程序項目[MyApp]」配置爲使用IIS的錯誤消息。無法訪問IIS元數據庫。您沒有足夠的權限訪問您計算機上的IIS網站。「請按照本文中的步驟操作。 Error - Unable to access the IIS metabase

在授予我的帳戶對intetsrv \ config文件夾的訪問權後,Web項目在Visual Studio中正確加載,無需以管理員身份運行VS.

但現在當我啓動網站時出現另一個警報:「無法在Web服務器上開始調試。 IIS不會列出與啓動的URL匹配的網站。單擊「幫助」以獲取更多信息。「最初,我只點擊了」創建虛擬目錄「並再次啓動,但同樣的警報再次出現。

所以我從警報中選擇了幫助按鈕。這導致this MSDN page,其中提出了大約二十件事情來檢查,與其他文章的鏈接的一半。我現在感覺有點像愛麗絲夢遊仙境,向着兔子洞進一步前進。

2015/2/3更新:在本地IIS實例上運行此解決方案時,我的解決方法是以管理員身份運行Visual Studio。最終,我們將應用程序更改爲使用IIS Express,然後放棄了該應用程序以獲取同事構建的另一個解決方案。這個決定與這個問題無關。感謝大家的反饋和想法。

3/7/2016更新:目前我無法複製這個問題,因爲我們去年在工作時沒有解決方案。如果主持人能夠解決這個問題,我將不勝感激。關閉這個選項並不符合我目前的情況,但也許別人會發現下面的建議有用,如果他們遇到這種情況。感謝所有提出建議的人。

+1

您是通過VS啓動應用程序還是手動將調試器連接到w3wp.exe?你使用的是IIS還是Express? –

+1

謝謝保羅。我根據你的建議嘗試了幾件事,並將它們附加到原始帖子中。往上看。 –

+1

斷點顯示爲紅色圓圈(未填充) – Saravanan

回答

1

從我以往的經驗,請考慮以下:

  • 檢查你已經把破發點,一個正確的地方,你正在運行的相關網頁或控制器
  • 右鍵點擊破發點= >位置=>選中「允許源代碼與原始版本不同」。如果你已經安裝了resharper,這可能有幫助。

  • 如果您是通過Ajax調用呼叫,請確保您有在頁面上而不是Java腳本錯誤(這個IE抓JS默認錯誤),有些時候是因爲沒有徹底建築

  • ,所以清洗 解決方案(右鍵點擊解決方案並選擇「clean solution」 項目),然後選擇「Rebuild Solution」。

  • 有些時候,那是因爲你可能已經禁用構建選項 一些類庫,所以在這種情況下,你需要完全重建那些 類的庫。(您可以通過檢查從「Build」菜單中選擇 「Configuration Manager」項目找到它)

希望這些幫助

1

我之前遇到了這個問題,並解決了它後,我重新生成解決方案包。 (右擊解決方案包並運行重建)

+1

您可以反編譯.dll文件來檢查編譯過程是否正常。 – Clement

1

下面是我爲這種場合保留的想法列表。

檢查你的dll被引用的位置,並確保它是你正在嘗試調試的代碼。

檢查構建時的處於正確模式:Debug/Release,因爲它們可能會將dll放在不同的位置。

您是否依附於正確的過程?

對於IIS上的網站,您正在使用的代碼與運行在IIS中的代碼相同嗎?

轉到調試> Windows>模塊,如果有相關的DLL在那裏,右鍵單擊它並加載符號。 如果它不在列表中,請嘗試運行代碼。有時即使它表示斷點不會被觸發,只是因爲在你輸入一個需要它的場景之前,dll並沒有被加載。試試依賴於dll的場景,並且它可能只是打破了斷點。

重新啓動瀏覽器。你可能會從舊的dll緩存一些東西。

2

請確保:

  1. 工具 - >選項調試器「啓用僅我的代碼」是沒有選
  2. 您正在運行在調試模式的應用程序,而不是發佈模式
  3. 解決方案構建是最新的
+0

謝謝!我遇到了一些斷點,但沒有其他人。 – woodge