【发布时间】:2013-06-05 10:30:23
【问题描述】:
我反复出现一个错误。该站点位于 ASP.NET 2.0 Web 表单上。没有模式可以再次重现此错误,因为它有时会发生,并且可以通过在 web.config 的末尾添加空格来解决。
可能是什么问题?
“/”应用程序中的服务器错误。 句柄无效。 (来自 HRESULT 的异常:0x80070006 (E_HANDLE))
异常详细信息:System.Runtime.InteropServices.COMException:句柄无效。 (来自 HRESULT 的异常:0x80070006 (E_HANDLE))
[COMException (0x80070006): 句柄无效。 (HRESULT 异常:0x80070006 (E_HANDLE))]
[FileLoadException:无法加载文件或程序集“AjaxControlToolkit,版本=3.0.30930.28736,Culture=neutral,PublicKeyToken=28f01b0e84b6d53e”或其依赖项之一。句柄无效。 (HRESULT 异常:0x80070006 (E_HANDLE))]
[ConfigurationErrorsException:无法加载文件或程序集“AjaxControlToolkit,版本=3.0.30930.28736,Culture=neutral,PublicKeyToken=28f01b0e84b6d53e”或其依赖项之一。句柄无效。 (来自 HRESULT 的异常:0x80070006 (E_HANDLE))] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +613
【问题讨论】:
-
您应该检查手柄是否泄漏,也许您正在使用所有可用的手柄。
-
“它通过在 web.config 的末尾添加空格来解决。” - 你的意思是它通过回收应用程序池来解决,这是一个副作用修改web.config。正如@Lasse 建议的那样,您的应用程序确实必须泄漏句柄。有关该项目的更多信息可能会有所帮助,例如您使用的库类型。
-
System.Windows.Forms.Timer 是否会导致问题?
-
是的,该类确实使用句柄(就像大多数 System.Windows.Forms.* 类一样),如果处理不当,可能会导致像您一样的问题。
-
为什么在 ASP.NET 上下文中使用
System.Windows.Forms.Timer?在服务器端使用System.Timers.Timer。