簡體   English   中英

USING塊在網站與Windows窗體中的行為不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM