我在一些网站数据库代码中单步执行调试器,并在应用数据库更改之前结束执行.但他们仍然写入数据库!我尝试使用Windows窗体应用程序重新创建问题,但它没有写入数据库(预期的行为).我回到了网站,它做到了.这是一个简单...
![](https://oss.womengda.net/imgfile/2309/1E39A52AI30-3Q92.jpg)
我在一些网站数据库代码中单步执行调试器,并在应用数据库更改之前结束执行.但他们仍然写入数据库!
我尝试使用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进程,只需分离调试器即可.您的代码继续运行并且请求完成.
这个问题有重复,没有代表将此标记为重复.
本文标题为:c# – USING块在网站与Windows窗体中的行为不同
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- Unity3D实现渐变颜色效果 2023-01-16
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Oracle中for循环的使用方法 2023-07-04
- Unity Shader实现模糊效果 2023-04-27
- user32.dll 函数说明小结 2022-12-26
- c# 模拟线性回归的示例 2023-03-14
- 如何使用C# 捕获进程输出 2023-03-10
- .NET CORE DI 依赖注入 2023-09-27
- 在C# 8中如何使用默认接口方法详解 2023-03-29