c# - 服务在 StackOverflowException 上继续

标签 c# windows-services .net-3.5 aspose.pdf

我们使用第三方库来处理 Pdf。我们的应用程序作为 Windows 服务运行,每月处理数千个文件。偶尔有人会上传格式错误的 Pdf,这会使库运行异常并最终抛出 StackOverflowException。

图书馆制造商在过去 2 年中没有修复错误,我们不能在有人想要的时候让我们的生产崩溃。

自动重启服务似乎不是一个选项,因为应用程序随后会重试格式错误的文件。由于我们并行处理许多文件,因此我们无法在开始时知道哪个格式错误。

由于默认情况下无法捕获 stackoverflows,我想知道是否可以调整服务的 CLR 以捕获异常。

最佳答案

您可以重新构建应用程序以创建新的子进程,每个子进程都有自己的库实例来执行工作。

最重要的是,通过这种方法,失败的实例不会导致整个应用程序崩溃或导致其他子进程崩溃。您还有一个优势,即管理器进程可以跟踪哪些文件正在处理(以及在哪个进程上),因此它会知道哪些文件在失败后不要重试。

关于c# - 服务在 StackOverflowException 上继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571850/

相关文章:

c# - 您将如何检测 Api Controller 中的当前浏览器?

c# - C# 所需的简单 SUM 查询

delphi - TPipeServer 和 TPipeClient 组件的读/写示例代码和安全检查

c# - 将参数传递给 QueueUserWorkItem

C# 怎么可能 false == true ?见图片

c# - 从证书库导入的 X509 证书没有私钥

c# - 检查未注册/丢失的服务

c# - 找不到类型或命名空间名称 'ServiceController'(是否缺少 using 指令或程序集引用?)

c# - ASP.NET MVC 路由

.net - 我可以在 4.0 应用程序中引用 .NET 3.5 .DLL 吗?