1

我正面临 3 层应用程序的问题。它使用 IIS 和 SQL Server。问题是有时(更长的请求导致更高的概率)客户端没有收到来自 IIS 的响应。当 SQL Server 上没有活动时,它会挂起,即使我杀死了一个 SQL 进程,我也没有得到异常响应。当我在这些挂起后检查数据时,我发现我的 SQL 请求已成功,因此问题似乎出在 IIS 上。不幸的是,我对托管应用程序的位置没有太多控制权,我无法重现该问题。这个问题可以有很多答案,但至少我需要一个提示,说明我应该研究什么方向。
更新:我还有一个在同一台服务器上运行的应用程序,它执行一项小工作:它将大约 100 行一行一行地插入到数据库中。我人为地让它运行了大约 10 分钟(通过将 xlock 放在桌子上)。删除 xlock 后,IIS 上的进程继续运行并成功插入了这 100 行。但是,此后控制权再也没有返回给客户端,它只是无限期地等待。在长时间运行的进程后向客户端返回响应时,这似乎是一个问题。
顺便说一句,这不是一个网站,而是一个使用 Remoting 的 WinForms 应用程序。

4

2 回答 2

1

如果您确定 SQL Server 正在返回 IIS,那么您可能需要检查IIS 日志以了解请求可能发生的情况。这些日志的正常位置是%SystemRoot%\system32\Logfiles\<service_name>.

如果您不确定 SQL Server,您可以访问 SQL 日志、运行 Profiler 或检查 Windows 系统日志中的错误、在 Visual Studio 中调试运行您的站点或将您自己的日志记录添加到您的应用程序以确定哪个步骤它挂了。

于 2012-11-03T14:17:28.403 回答
1

我终于弄清楚问题出在哪里了。该应用程序在 Web 场上运行,并且在客户端和 IIS 之间有一个平衡器服务器。平衡器上的超时太小。由于某种原因,它对 .net 远程处理不太友好,并且它不会向客户端返回任何超时异常。该问题已通过增加超时得到解决。

于 2013-01-25T08:02:32.623 回答