服务在 StackOverflowException 上继续

Service to continue on StackOverflowException

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

库制造商在过去 2 年中没有修复错误,我们不能在有人喜欢的时候让我们的生产崩溃。

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

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

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

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