2017-03-18 36 views
0

這是曾經發生過的最奇怪的事情,所以請聽我說。Web API返回結果,但即使在正確加載符號時也不會生成斷點

  1. 符號越來越正確加載。所以這不是一個問題。
  2. API正在運行且數據有效。
  3. 我在同一個項目中有2個控制器。當我發出GET請求時,會觸發一個控制器的斷點。但第二個控制器的斷點沒有被擊中。但它確實返回結果。

我在構造函數級別放了一個斷點(並且嘗試過其他地方),但不知道發生了什麼問題。

該代碼是非常正常的C#MVC web api。

有誰知道什麼可能會導致此行爲?

回答

0

我有類似的問題 - 嘗試這個網站了,這可能有助於 breakpoint issue

同時試圖迫使斷點 System.Diagnostics.Debugger.Break();

+0

剛剛試過。它仍然沒有擊中。現在看看你的鏈接。謝謝! – 90abyss

+0

單擊解決方案文件>啓動項目的屬性。選擇多個啓動項目並選擇您的站點和您的服務作爲開始選擇 –

1

一招我喜歡用是使用Exception秒。首先,您將您的「不良」Controller中的一些公開方法更改爲僅僅無條件地throw某些虛擬Exception。然後從任何使用WebAPI的方法調用該方法,並確保Exception實際上被拋出。有時候某些東西會被緩存,代碼實際上不會被重新編譯或者其他東西。

然後附上您的調試器,看看它是否抓住了Exception。你可能會附加到一個錯誤的過程。

接下來修改代碼爲throwcatchException並且只是記錄它。這裏的訣竅是VS調試器有一個選項可以停止即使被捕獲的「用戶處理」異常:請參閱配置here for VS up to 2013here for VS 2015+。然後你可以看到符號是否與代碼相符。

+0

這是一個很棒的技巧。會試試這個。謝謝! – 90abyss

0

是否控制器,它的作品,但沒有擊中無論是正在生成它的斷點,輸出緩存?如果是這樣,數據將被緩存的任何內容返回,並且控制器不會被實例化。

目前尚不清楚是否要使用MVC或的WebAPI控制器,或者您正在返回什麼。但是,如果它是MVC,則可以查找[OutputCache()]屬性。您也可以留意其他緩存相關的頭文件,這些頭文件可能會被添加。

根據您可能能夠通過添加一個隨機的查詢字符串值,以便它具有創建一個新的緩存鍵,以規避它的緩存策略。例如:

http://example.com/some/path/1234?cow=moo 
-1

我寫下來之前有同樣的問題剛纔...嘗試將你的屬性的WebAPI和比較,如果在網絡部分中找到該項目的URL相同的URL在您的網站的webconfig文件中指定。至於我的問題,網站正確地指向webapi,它允許讀取webapi中的任何代碼更改,但是,調試器被指向錯誤的地方,因此它無法讀取您放置的任何斷點。

相關問題