我们使用第三方库来操纵Pdf。我们的应用程序作为Windows服务运行,每个月处理数千个文件。偶尔会有人上传格式错误的Pdf,这会导致库运行失败并最终抛出StackOverflowException。
图书馆制造商没有修复过去两年的错误,当有人感觉到它时,我们不能让生产崩溃。
自动重启服务似乎不是一个选项,因为应用程序将重试格式不正确的文件。由于我们并行处理多个文件,因此我们无法知道启动时哪个文件格式不正确。
由于默认情况下无法捕获stackoverflow,我想知道是否可以调整服务的CLR来捕获异常。
答案 0 :(得分:3)
您可以重新构建应用程序以创建新的子进程,每个进程都有自己的库实例,以执行工作。
最重要的是,使用这种方法,失败的实例不会使整个应用程序崩溃,也不会使其他子进程失效。您还可以获得以下优势:管理器进程可以跟踪正在进行的文件(以及在哪个进程上),以便知道哪些文件在失败后不会重试。