我遇到了最奇怪的问题...我有一个单轨网站(一个.NET 解决方案,类似于 ASP.NET MVC).. 在其中一个页面上有一个保存按钮。单击保存按钮时,它会执行一些代码将对象保存到数据库,然后重定向到另一个页面。但是,它所做的是在您单击保存按钮后立即执行所有保存代码,然后它会在那里停留一段时间,然后重定向到另一个页面并执行其代码。这里有一些关于这种情况的事实,这使得它特别奇怪。
- 每次您完成单击保存并等待它完成和重定向的过程时,它都会比您上次尝试的时间长 2-4 秒。所以第一次需要 2 秒,然后可能是 5 秒,然后是 8 秒,等等......
- 如果您回收应用程序池,它会使其再次快速运行,但随后事实 #1 开始发挥作用,并且执行次数越多,它就会变得越慢。
- 我添加了日志,它在 1 毫秒内执行保存和重定向代码,然后等待一段时间,然后快速执行新页面的代码。
- 我尝试将其更改为重定向到 google.com,但它仍然以这种方式运行。
- 我尝试让它根本不重定向,只是在保存后再次提供现有页面,它仍然以这种方式运行。
- 每次单击保存时,它都会使 CPU 达到峰值(特别是 w3wp 进程。)
- 其他页面不这样做,即使是其他保存方法。
- 注释掉保存到数据库中的代码可以使其正常工作,无需等待。
那么有没有人知道会导致这种情况的原因是什么?保存代码使用 Active Record 和 NHibernate。代码本身运行得非常快,就像我说的不到 1 毫秒,但似乎在代码完成执行后异步发生了一些事情,使它挂了很长时间..
任何想法将不胜感激,代码位于http://pastebin.com/XGLAWPgK。