1

我有一個ASP.NET 4.0 WEB API應用程序正在運行,它修改了一些數據庫記錄。VS2010在「停止調試」(Web API)後保持運行

我的代碼遍歷訂單和更新:

<[PUT]("ProcessOrders")> 
Public Sub PutValue() 

    Dim Orders as List(of OrderInfo) = DAL.GetOrders() 

    For Each Order As OrderRequest In Orders 

     Dim Status As OrderProcessingStatus = Order.Process() 

     If (Status.isSuccessfullyProcessed) Then 
      DAL.UpdateOrderStatus(Order.OrderNumber, "SUCCESS") 
     Else 
      DAL.UpdateOrderStatus(Order.OrderNumber, "FAIL", Status.ErrorMessage) 
     End If 
    Next 

End Sub 

而在VS2010調試,我在第一行從哪裏獲得的訂單一個破發點。 在VS2010中,我點擊「停止調試」 - 期待我的代碼會立即停止並不執行。

令我驚訝的是,即使在單擊「停止調試」後,代碼仍在運行並更新我的數據庫。

請幫忙。

注:我開始調試,然後我使用Fiddler如果進程啓動調試器外部調用此方法

感謝,

Simcha

回答

4

想通了。像Adrian McCarthy所說:

如果進程在調試器外部啓動,然後附加調試器,「停止調試」命令只是將調試器從進程中分離出來,並且進程繼續運行。

最後,我使用了Debug菜單下的「Terminate All」。這實際上會停止所有請求/進程。

+0

Visual Studio的這種行爲讓我瘋狂。在一個事務中,我暫停了調試器,在檢查代碼後,我點擊「停止調試」按鈕,認爲代碼已經停止。我結束了一些不應該在那裏完成的交易。在實現Visual Studio調試器的這種行爲之前,分析了導致交易完成的原因。 – zszep

1

,然後附加調試器, 「停止調試」命令只是將調試器從進程中分離出來,並且該進程繼續運行。

如果你想停止進程,那麼從調試器啓動它。如果這很不方便(例如,如果進程由某個事件的另一個進程啓動),則必須在任務管理器中終止該進程,然後停止調試器。

+0

我是在調試器內部啓動進程,但我的PUT請求來自Fiddler。 –