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。 –