C# 如何消除WCF服务中过期的SqlException超时?

C# 如何消除WCF服务中过期的SqlException超时?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我正在开发asp.net web应用程序,该应用程序通过WCF服务与sql server数据库交互。我有时会遇到以下异常,但不是每次都是 System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. This failure o

我正在开发asp.net web应用程序,该应用程序通过WCF服务与sql server数据库交互。我有时会遇到以下异常,但不是每次都是

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  
The timeout period elapsed prior to completion of the operation or the server is not responding.  
This failure occured while attempting to connect to the Principle server.
---> System.ComponentModel.Win32Exception (0x80004005): 
The wait operation timed out
我知道这有多种原因。某个地方出现死锁或查询太复杂

在某些地方,我读到设置
SqlCommand
对象的
CommandTimeout
可以解决这个问题


因此,在应用这个逻辑之前,我想知道这个问题的主要原因,如果有任何其他的解决方法来解决这个问题,请让我知道。如果我遗漏了什么,请告诉我。

您是否尝试过检查SQL查询并查看它是否可以优化?在增加超时值之前,这应该是正确的方法。另外一个选项是将查询包装到try-catch-in-sql过程中。。因此,如果发生任何异常,您可以使其失败,而不是阻塞。这似乎与WCF无关。您可以使用SQL Management Studio中内置的查询分析器来确定查询的哪个部分在处理时间方面贡献最大。例如,在大型表上,表扫描可能非常昂贵;索引查找和键查找是您通常希望看到的。在这种情况下,添加索引可能会有所帮助(它们通常会加快读取速度,但会减慢插入和更新速度)?若是这样,那个么就使用查询分析器吧,这样你们会有更好的想法。同时增加CommandTimeout的值