gpt4 book ai didi

.net - 防止未处理的异常破坏 Azure 辅助角色

转载 作者:行者123 更新时间:2023-12-04 16:12:18 25 4
gpt4 key购买 nike

我们有一个 Azure 辅助角色,它运行大量异步工作负载,并在 IO 线程等上完成大量工作。

有时,我们不拥有的异步回调会发生未处理的异常。这反过来会导致角色失败。

在非 Azure ASP.NET 应用程序中,我们可以通过在 aspnet.config 中启用旧的未处理异常策略来避免这种情况,如下所示:

<configuration> 
<runtime>
<legacyUnhandledExceptionPolicy enabled="1" />
<runtime>
<configuration>

有没有办法对 Azure 辅助角色执行相同的操作?我们尝试将其放入角色项目的 app.config 中,但这不起作用(因为我们可能必须以某种方式将其放入 WaWorkerHost.exe.config 中)。

我们知道AppDomain.CurrentDomain.UnhandledExceptionApplication.SetUnhandledExceptionModeHow to catch an unhandled exception in Windows Azure (Worker) Role这些并不能解决我们的问题。

最佳答案

只需阅读您的帖子,因为我对网络角色也有同样的经历。现在我添加了您的代码片段并检查我是否会再次遇到此错误。对 AppDomain 类进行了一些研究:http://msdn.microsoft.com/en-us/library/system.appdomain.aspx 。事实上,我正在寻找未处理的异常策略,但还没有找到。但我发现了事件“UnhandledException”http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

但是你写的这个不起作用。因为这稍后也会对我产生影响 - 我将以 azure worker 角色运行第 3 方开源组件 - 我做了一些研究。

我将尝试为第三个代码创建一个新的AppDomain - 如果发生异常,它将崩溃/卸载新创建的AppDomain,而不是当前我运行代码的AppDomain。另一个解决方案可能是创建一个新的AppDomain过程,我认为这是更多的工作。

编辑:我重新讨论了这个主题:在 2.0 版本中,它被引入来拆除应用程序域,以防线程(不是主线程)在类库中遇到错误。看来即使是单独的 ApplicationDomain 也无济于事。据我了解,这种设计应该通过在库级别捕获异常并适当处理它们来帮助调试隐藏在库中的错误。但让我恼火的是——如果我们使用我们无法控制的第三方类库会发生什么?如果我们的问题太小以至于供应商无法及时解决我们的问题,那么我们似乎就会陷入困境。

关于.net - 防止未处理的异常破坏 Azure 辅助角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com