C# ImageResizer应用程序崩溃

C# ImageResizer应用程序崩溃,c#,iis-7,imageresizer,C#,Iis 7,Imageresizer,我们让ImageResizer抛出如下所示的错误,随后我相信应用程序池崩溃,新的应用程序池启动。。。这反过来也导致大量图像排队,服务中断了半个小时。有人见过这个吗 注意,对于文件名中包含“images”的图像,我们在事件日志中还看到ImageResizer出现了一些“拒绝访问”错误。不确定是否相关 任何想法都将不胜感激 例外信息: 异常类型:ImageProcessingException 异常消息:未能获取文件“E:\images\1d\3a05214b1dfa98e41d04ed86db6c

我们让ImageResizer抛出如下所示的错误,随后我相信应用程序池崩溃,新的应用程序池启动。。。这反过来也导致大量图像排队,服务中断了半个小时。有人见过这个吗

注意,对于文件名中包含“images”的图像,我们在事件日志中还看到ImageResizer出现了一些“拒绝访问”错误。不确定是否相关

任何想法都将不胜感激

例外信息: 异常类型:ImageProcessingException 异常消息:未能获取文件“E:\images\1d\3a05214b1dfa98e41d04ed86db6c3f6e600347e92a1b102016e8eac5ee15a9ed.jpg”上的锁定 15000毫秒以内。缓存失败。在 ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e)
在ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext 上下文,IResponseArgs(e)在 ImageResizer.InterceptModule.HandlerRequest(HttpContext上下文,字符串 virtualPath、NameValueCollection查询字符串、IVirtualFile vf)位于 ImageResizer.InterceptModule.CheckRequest\u PostAuthorizerRequest(对象 发件人,事件参数(e)位于 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤, 布尔值(同步完成(&C))

“让它运行提示” 首先,确保您正在运行ImageResizer 3.4或更高版本,因为它可以解决4.0 CLR中与文件刷新相关的一些新错误

第二,确保没有反病毒软件可以在运行时扫描或锁定文件(AV喜欢在文件写入后立即扫描文件,直到文件“通过”为止)

第三,确保没有模拟发生-缓存文件由ASP.NET编写,但由IIS提供服务,因此可以涉及多个用户帐户

第四,确保服务器的磁盘支持异步写入。这大大减少了文件句柄争用。您还可以在ImageResizer的DiskCache中启用异步写入以提供帮助

诊断罪犯 如果这种情况发生在一组特定的文件上(并且损坏的图像不会很快“修复”它们自己),则可能是由于工作进程意外死亡而永久锁定了文件。通常,这些文件的唯一解决方案是重新启动服务器,但请先尝试Sysinternals工具。可以用于诊断是什么进程导致了锁定(当然,不是进程中的哪个软件)

诊断是什么杀死了一个进程并不十分困难,但可能很耗时。(如果没有帮助,请使用)。崩溃转储可以识别罪魁祸首,但失败的请求跟踪只能给您一些好的提示。在我检查过的崩溃转储中,ImageResizer几乎从来不是原因,因为它使用非常好的内存管理,并且倾向于很好地管理错误。如果你有其他的处理成像的软件,你可能会考虑禁用它们。
由于ImageResizer是一个web服务,您通常可以在使用不同应用程序池的子应用程序中运行它。如果您怀疑ImageResizer是问题所在,这通常是确定问题的最快方法。当然,如果图像由多个根目录提供,这可能需要一些时间,因为您必须创建多个子应用程序

谢谢。我们正在使用3.3.3-我将尝试升级到该版本。有AV,但ImageResizer设置为最多等待15秒,不会花那么长时间。权限不应该有任何问题。我还将尝试启用异步写入。是的,我不清楚应用程序池是否崩溃,这是导致上述问题的原因,还是上述问题导致应用程序池崩溃。我已经看到AV永久锁定文件,或者一次保留几分钟。不开玩笑。我已经为ImageResizer目录禁用了AV,但尽管如此,我们还是在大约12小时后发生了应用程序池崩溃。没有生成崩溃转储。当前进程挂起在剩下的一个线程上,并且有一个挂起的WerFault进程没有在与应用程序相同的用户名下运行。您是否发现了这一点?是否与ImageResizer有关?