[英]USING block behaves differently in website vs windows form
我在一些網站數據庫代碼中單步執行調試器,並在應用數據庫更改之前結束執行。 但他們仍然寫入數據庫!
我嘗試使用Windows窗體應用程序重新創建問題,但它沒有寫入數據庫(預期的行為)。 我回到了網站,它做到了 。
這是一個簡單的示例頁面。 我在一個網站上運行它,如果它有所作為:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<!DOCTYPE html>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
using (MsSqlDataContextDataContext db = new MsSqlDataContextDataContext())
{
Product product = db.Products.First(p => p.id == 21);
Debug.WriteLine("Line 1");
// I learnt the hard way that if you try to update the database with the value
// that already exists, it seems to get optimised away.
// The update must a new value.
product.Type = "bogus" + DateTime.UtcNow.Ticks;
Debug.WriteLine("Line 2"); // <- Breakpoint here
db.SubmitChanges();
}
}
</script>
<html>
<head runat="server">
</head>
</html>
在第二個調試打印或SubmitChanges()
執行之前 ,我在斷點處結束執行( Shift + F5 )。 “2號線”是不輸出到調試窗口,但數據庫更改 。
在Windows窗體中運行相同的測試確實表現相同。
頁面生命周期或會話管理是否會以某種方式干擾此處? 這怎么可能,2號線不打印!
當您在winform應用程序中停止調試時,該過程將終止,您的代碼將停止執行。
在asp.net中並非如此。 當您停止調試器(通常)時,它不會終止iis進程,只需分離調試器即可。 您的代碼繼續運行並且請求完成。
這個問題有重復,沒有代表將此標記為重復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.