ion*_*arp 6 .net azure azure-worker-roles
我们有一个Azure工作者角色,它运行严重异步工作负载,在IO线程等上有很多完成.
有时,我们不拥有的异步回调会发生未处理的异常.这反过来导致角色失败.
在非Azure ASP.NET应用程序中,我们可以通过在aspnet.config中启用旧的未处理的异常策略来避免这种情况,如下所示:
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="1" />
<runtime>
<configuration>
Run Code Online (Sandbox Code Playgroud)
有没有办法为Azure辅助角色执行相同的操作?我们尝试将此放置在角色项目的app.config中,但这不起作用(因为我们可能必须以某种方式将其放入WaWorkerHost.exe.config).
我们知道的AppDomain.CurrentDomain.UnhandledException
,和Application.SetUnhandledExceptionMode
,以及如何捕捉在Windows Azure中(工人)的作用未处理的异常,而这些不解决我们的问题.
只需阅读您的帖子,因为我对网络角色也有同样的经历。现在我添加了您的代码片段并检查我是否会再次遇到此错误。对 AppDomain 类进行了一些研究:http://msdn.microsoft.com/en-us/library/system.appdomain.aspx。事实上,我正在寻找未处理的异常策略,但还没有找到。但我发现了事件“UnhandledException” http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledException.aspx。
但你写的这个不起作用。因为这稍后也会对我造成影响 - 我将以天蓝色工作者角色运行第 3 方开源组件 - 我做了一些研究。
我将尝试为第三个代码创建一个新的 AppDomain - 如果发生异常,它将崩溃/卸载新创建的 AppDomain 而不是当前我运行代码的应用程序域。另一个解决方案可能是创建一个新进程,其中我想还有更多的工作。
编辑:我重新讨论了这个主题:在 2.0 版本中,引入它是为了在线程(不是主线程)在类库中遇到错误时拆除应用程序域。看来即使是单独的 ApplicationDomain 也无济于事。据我了解,这种设计应该通过在库级别捕获异常并适当处理它们来帮助调试隐藏在库中的错误。但让我恼火的是——如果我们使用我们无法控制的第三方类库会发生什么?如果我们的问题太小以至于供应商无法及时解决我们的问题,那么我们似乎就会陷入困境。
归档时间: |
|
查看次数: |
1435 次 |
最近记录: |