在开发Web应用程序时,Web客户端上的一个按钮开始使应用程序崩溃。VS调试视图和客户端浏览器一起关闭。VS 2019调试输出显示以下错误(客户端或服务器上没有其他信息):The program '[23396] iisexpress.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.这将绕过所有try/catch,这使得调试变得困难。
The program '[23396] iisexpress.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.
e5njpo681#
我得到这个错误是因为一个无限递归调用。要查明这样的bug**,请添加断点和日志行(或单步执行)!!!**在我的例子中,由于错误,get属性在某些条件下返回了自己。Visual Studio调试会话的崩溃自然会关闭Web浏览器(由VS打开),这增加了混乱。就好像客户端崩溃了。只有当您保持另一个浏览器会话连接到localhost://nnnnn时,您才会看到崩溃的是服务器。
wqsoz72f2#
当我在属性getter(IsRunning)中调用系统方法(Process.GetProcessById())时,我个人经历了这个错误消息。Entity Framework Core在检索属性所在的对象时访问getter,系统调用导致了错误消息。
public bool IsRunning { get { var exited = Process.GetProcessById(ProcessId).HasExited; return !exited; } set { IsRunning = value; } }
这是后见之明,不是大脑。我把代码改成这样:
public bool IsRunning { get; set; }
很简单我选择避免依赖getter来实现我想要的逻辑。
2条答案
按热度按时间e5njpo681#
我得到这个错误是因为一个无限递归调用。
要查明这样的bug**,请添加断点和日志行(或单步执行)!!!**
在我的例子中,由于错误,get属性在某些条件下返回了自己。
Visual Studio调试会话的崩溃自然会关闭Web浏览器(由VS打开),这增加了混乱。就好像客户端崩溃了。
只有当您保持另一个浏览器会话连接到localhost://nnnnn时,您才会看到崩溃的是服务器。
wqsoz72f2#
当我在属性getter(IsRunning)中调用系统方法(Process.GetProcessById())时,我个人经历了这个错误消息。Entity Framework Core在检索属性所在的对象时访问getter,系统调用导致了错误消息。
这是后见之明,不是大脑。我把代码改成这样:
很简单我选择避免依赖getter来实现我想要的逻辑。