debugging iisexpress崩溃由客户端Web浏览器触发,错误是“程序iisexpress exe已退出,代码为0xc0000005访问冲突”

iugsix8n  于 2023-06-06  发布在  其他
关注(0)|答案(2)|浏览(268)

在开发Web应用程序时,Web客户端上的一个按钮开始使应用程序崩溃。
VS调试视图和客户端浏览器一起关闭。VS 2019调试输出显示以下错误(客户端或服务器上没有其他信息):
The program '[23396] iisexpress.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.这将绕过所有try/catch,这使得调试变得困难。

e5njpo68

e5njpo681#

我得到这个错误是因为一个无限递归调用
要查明这样的bug**,请添加断点和日志行(或单步执行)!!!**
在我的例子中,由于错误,get属性在某些条件下返回了自己。
Visual Studio调试会话的崩溃自然会关闭Web浏览器(由VS打开),这增加了混乱。就好像客户端崩溃了。
只有当您保持另一个浏览器会话连接到localhost://nnnnn时,您才会看到崩溃的是服务器。

wqsoz72f

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来实现我想要的逻辑。

相关问题