所以,我的web系统出现了一个奇怪的情况。
我有一个Windows服务的实现,它启动一个。net远程服务器并等待各种客户端的调用。
另一边是ASP。.Net Web-forms应用程序,可以使用.Net远程结构调用该服务中的一些方法。
在一个页面中,我有一个按钮,这个按钮调用Ajax调用,这个Ajax调用,在Asp. js上执行异步方法。Net Web-forms Application.
一切正常
但是,在完成Ajax调用时,我有第二个异步调用。在完成第一个Ajax调用之后,第二个Ajax调用可以正常执行,但不是立即执行,而是在3或4秒之后执行。
当站点在IIS中发布时发生,在Visual Studio (localhost)中,这不会发生。
我可以将我的服务(服务器)配置为TCP或ICP,以二进制模式发送数据…对于任何配置,问题总是发生
几个月来,我在许多论坛和网站上发现了同样的问题,最后我有了一个答案。
实际上,问题不在于AJAX调用或多个AJAX调用。出现这个问题是因为。net Remoting的线程池和IIS线程池之间有问题。
当AJAX调用被执行时,这个站点在服务器端进行一些计算。这些计算(使用。net Remoting执行)生成一些txt文件的日志。
为了生成这些日志,Windows需要使用IIS限制下的正常线程池e。IIS等待Windows线程池返回大约5秒。因此,在这种情况下,存在两个线程池,一个用于Windows,另一个用于IIS。
删除日志生成,我可以在正确的时间执行进程。有些人在服务器端使用ADO执行SQL查询时会发现同样的问题。