0

如果我有一个只公开一个调用的 .asmx Web 服务。一种需要一些参数并将这些值作为记录插入 SQL Server 2005 表中的方法。该方法应该看起来如何与 ADO.NET 连接池尽可能“友好”?如果它可能每秒被调用 10 次(分散)到多个客户端,它应该是什么样子。我应该调整任何其他设置吗?

目前我收到错误:

System.Web.Services.Protocols.SoapException:
服务器无法处理请求--> System.Data.SqlClient.SqlException:超时已过期。操作前超时时间已过或服务器未响应。

如果连接池是问题,错误会有所不同吗?如何判断这是连接池问题、SOAP 限制,还是我的数据库太忙以至于调用真的超时了?

4

1 回答 1

1

您没有发布有关您正在做的事情的一些最重要的信息。它是一个网络方法的事实是一个红鲱鱼,它只是归结为一个数据库问题,以及你有多少锤击它。

正如异常状态所示,您似乎在这里可能遇到了连接问题(而且我认为这与池没有任何关系)。您是否在尝试打开连接或尝试执行操作时收到此信息?每个都有一个单独的超时,因此最好显式打开连接然后调用操作,这样您就可以看到超时发生的位置。

另外,我想看看您是否正在使用事务。如果这包含在连接中,并且操作超时,并且您正在使用事务,那么您是否使用事务来访问包含在事务中的其他任何地方(读取或写入)的表?那时可能会陷入僵局。

除此之外,如果不是这种情况,那么这是一个连接问题,您必须查看机器和服务器是否配置正确(例如,您是否使用 tcp ip、命名管道或共享内存)用于数据库操作。

于 2009-04-08T17:58:08.977 回答