我在Vista下的本地IIS6上托管了一个简单的ASP.NET应用程序。
它包含一个按钮,当我单击时,我执行一段代码来识别WAV文件中的文本(使用System.Speach.Recognition.SpeechRecognition类)并在标签中显示文本。
代码在桌面应用程序上运行良好,它几乎可以在网络上运行...我几乎说,因为如果我调试,我可以看到识别器从WAV返回正确的文本,我可以看到我正在完成按钮单击的处理程序没有错误,但是我的页面中没有显示任何内容,页面显示为加载...它挂起,或者某些东西......没有错误,没有超时,没有。只是加载......
我不知道这个细节是否有帮助,但是为了使已经在桌面应用程序上运行的代码片段在Web应用程序上运行,我必须将我的应用程序的ApplicationPool的标识设置为LocalSystem (安全漏洞,我知道)。否则,我会收到一个拒绝访问错误(0x80070005(E_ACCESSDENIED))。
你有什么想法为什么这样的电话会挂起来?我和这个人争吵了两天以上,时间压力很大,我也没有任何线索......真的欢迎任何帮助!
谢谢!
答案 0 :(得分:1)
又过了一个星期的stuglles,我找到了解决问题的方法。我发布这个只是其他可能有这个问题找到解决方案更快。
解决方案是调用在不同线程上进行语音识别的方法。我认为这会在识别结束后强制释放该线程中的所有资源。
我无法理解为什么这甚至发生在第一个地方(我使用了块,我以所有想象的方式关闭和处理了所有对象),但我怀疑是一个记忆释放问题...
无论如何,另一个线程上的一个非常简单的调用修复了它!