ASP.NET 应用程序在调用后挂起
Posted
技术标签:
【中文标题】ASP.NET 应用程序在调用后挂起【英文标题】:ASP.NET application hangs after a call 【发布时间】:2010-05-24 18:00:45 【问题描述】:我有一个简单的 ASP.NET 应用程序,托管在我的本地 IIS6 上,在 Vista 下。
它包含一个按钮,当我单击该按钮时,我会执行一段代码来识别 WAV 文件中的文本(使用 System.Speach.Recognition.SpeechRecognition 类)并在标签中显示文本。
代码在桌面应用程序上运行良好,它几乎在网络应用程序上运行......我说几乎,因为如果我调试,我可以看到识别器从 WAV 返回正确的文本,我可以看到我正在完成按钮单击的处理程序,没有错误,但我的页面中没有显示任何内容,并且页面看起来像加载......它正在挂起,或者什么......没有错误,没有超时,什么都没有。正在加载中...
我不知道这个细节是否有帮助,但为了使已经在桌面应用程序上运行的代码在 Web 应用程序上运行,我必须将我的应用程序的 ApplicationPool 的标识设置为 LocalSystem (安全漏洞,我知道)。否则,我会收到拒绝访问错误 (0x80070005(E_ACCESSDENIED))。
您知道为什么电话会这样挂起吗?我为此奋斗了两天多,时间紧迫,我不知道......任何帮助真的很受欢迎!
谢谢!
【问题讨论】:
你应该在 web 服务器上创建另一个用户,给它 asp.net 安全设置,然后在你的 web.config 中模拟。看看有没有帮助?当应用挂起时,您在服务器上的事件查看器中看到任何内容吗? 【参考方案1】:又经过一周的挣扎,我找到了解决问题的办法。我发布这个只是为了让其他可能有这个问题的人更快地找到解决方案。
解决方案是调用在不同线程上进行语音识别的方法。我认为这会在识别结束后强制释放该线程中的所有资源。
我无法理解为什么会发生这种情况(我使用了块并以所有想象的方式关闭并处置了所有对象),但我怀疑是内存释放问题......
不管怎样,一个非常简单的调用另一个线程就可以解决它!
【讨论】:
以上是关于ASP.NET 应用程序在调用后挂起的主要内容,如果未能解决你的问题,请参考以下文章
使用 React 和 Socket.io 的聊天应用程序在发送太多消息后挂起
MFC 应用程序在 CSingleLock Lock() 后挂起