我在一些网站数据库代码中单步执行调试器,并在应用数据库更改之前结束执行。但他们仍被写入数据库!
我尝试使用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>
我在断点处结束执行( Shift + F5 ),在第二次调试打印之前或SubmitChanges()
执行。 &#34;第2行&#34;是不输出到调试窗口,但数据库更改是。
在Windows窗体中运行相同的测试的行为相同。
页面生命周期或会话管理是否会以某种方式干扰此处?这怎么可能,2号线不打印!
答案 0 :(得分:6)
当您在winform应用程序中停止调试时,进程正在终止,您的代码将停止执行。
在asp.net中并非如此。当您停止调试器(通常)时,它不会终止iis进程,只需分离调试器即可。您的代码继续运行,请求完成。
这个问题有重复,没有代表将此标记为重复。