有时,如果我们的文件服务器很慢并且页面在超时之前没有完成,ASP.Net 会使用 ThreadAbortException 对其进行处理。如果这种情况发生在 Win32Native.CreateFile 中,它将使文件句柄处于锁定状态,直到我们执行 iisreset。
这是 .NET 中的缺陷吗?我们能做些什么来解决这个糟糕的想法,比如将超时时间提高到某个巨大的数字......我认为 ThreadAbort.Reset 不会有帮助,因为损坏已经完成,我什至没有返回文件句柄从 FileStream 自己关闭它。
在 Microsoft.Win32.Win32Native.CreateFile(字符串 lpFileName,Int32 dwDesiredAccess,FileShare dwShareMode,SECURITY_ATTRIBUTES securityAttrs,FileMode dwCreationDisposition,Int32 dwFlagsAndAttributes,IntPtr hTemplateFile)
在 Microsoft.Win32.Win32Native.SafeCreateFile(字符串 lpFileName,Int32 dwDesiredAccess,FileShare dwShareMode,SECURITY_ATTRIBUTES securityAttrs,FileMode dwCreationDisposition,Int32 dwFlagsAndAttributes,IntPtr hTemplateFile)
在 System.IO.FileStream.Init(字符串路径、FileMode 模式、FileAccess 访问、Int32 权限、Boolean useRights、FileShare 共享、Int32 bufferSize、FileOptions 选项、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy、Boolean useLongPath)
在 System.IO.FileStream..ctor(字符串路径,FileMode 模式,FileAccess 访问,FileShare 共享,Int32 bufferSize,FileOptions 选项,字符串 msgPath,布尔 bFromProxy)
在 System.IO.FileStream..ctor(字符串路径,FileMode 模式)