0

所以,我的网络系统中发生了一个奇怪的情况。

我有一个 Windows 服务的实现,它启动一个 .Net 远程服务器并等待各种客户端的调用。

另一方面,我有一个 ASP.Net Web-forms 应用程序,它可以使用 .Net Remoting Structure 调用此服务中的一些方法。

在一个页面中,我有一个按钮,这个 Button 调用一个 Ajax Call,这个 Ajax Call 在 Asp.Net Web-forms Application 上执行一个异步方法。

一切正常。

但是,在完成 Ajax 调用时,我有第二个异步调用。完成第一个 Ajax 调用后,第二个执行正常,但不是立即执行,仅在 3 或 4 秒后执行。

它仅在站点在 IIS 中发布时发生,在 Visual Studio (localhost) 中,这没有发生。

我可以将我的服务(服务器)配置为 TCP 或 ICP,以二进制模式发送数据......任何配置,问题总是发生。

4

1 回答 1

0

几个月来,我在许多论坛和网站上都发现了同样的问题,最后我有了答案。

事实上,问题不在于 AJAX 调用或多个 AJAX 调用。出现问题是因为 .NET Remoting 的线程池和 IIS 线程池之间存在问题。

当执行 AJAX 调用时,该站点会在服务器端进行一些计算。这些计算(使用 .NET Remoting 执行)在 txt 文件中生成一些日志。

为了生成这些日志,Windows 需要使用正常的线程池 e 来限制 IIS。IIS 等待了大约 5 秒以等待 Windows 线程池的返回。因此,在这种情况下,存在两个线程池,一个用于 Windows,另一个用于 IIS。

删除日志生成,我可以在正确的时间执行该过程。有些人发现在服务器端使用 ADO 执行 SQL 查询时会出现同样的问题。

于 2013-10-14T18:43:01.490 回答