我们使用第三方库来处理 Pdf。我们的应用程序作为 Windows 服务运行,每月处理数千个文件。偶尔有人会上传格式错误的 Pdf,这会使库运行异常并最终抛出 StackOverflowException。
图书馆制造商在过去 2 年中没有修复错误,我们不能在有人想要的时候让我们的生产崩溃。
自动重启服务似乎不是一个选项,因为应用程序随后会重试格式错误的文件。由于我们并行处理许多文件,因此我们无法在开始时知道哪个格式错误。
由于默认情况下无法捕获 stackoverflows,我想知道是否可以调整服务的 CLR 以捕获异常。
最佳答案
您可以重新构建应用程序以创建新的子进程,每个子进程都有自己的库实例来执行工作。
最重要的是,通过这种方法,失败的实例不会导致整个应用程序崩溃或导致其他子进程崩溃。您还有一个优势,即管理器进程可以跟踪哪些文件正在处理(以及在哪个进程上),因此它会知道哪些文件在失败后不要重试。
关于c# - 服务在 StackOverflowException 上继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571850/