我正在尝试使用存储过程,我在其中发送通过ADO.NET C#代码发送的单个参数。
现在的问题是存储过程是从我的开发环境调用的,当我将它部署到生产时,我得到超时过去的例外,它永远不会到达存储过程(我已添加记录以检查存储过程是否实际被命中以及它导致超时的阶段。
异常:System.Data.SqlClient.SqlException(0x80131904):超时已过期。操作完成之前经过的超时时间或服务器没有响应。 ---> System.ComponentModel.Win32Exception(0x80004005):等待操作超时
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection,Action
1 wrapCloseInAction)
1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)
在System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady)
在System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)
在System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task& task,Boolean asyncWrite,SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
1 completion,String methodName,Boolean sendToPipe,Int32 timeout,Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
在ProjectName.ViewModel.ClassViewModel。<> c__DisplayClasse.b__d()
我不知道生产服务器上发生了什么。请指导我解决这个问题。
对于相同的错误消息有很多问题,但是我无法找到类似的问题,例如存储过程没有被执行,仍然会导致超时错误。
我会包含存储过程但它是非常基本的存储过程。
请帮助:)
谢谢, Nikhil Chavan。
答案 0 :(得分:1)
您是否尝试在SQLServer中运行存储过程并检查它是否成功运行?
您是否尝试过设置SqlCommand.CommandTimeout属性?
如果你的连接字符串指向正确的数据库并且可以访问它,你是否检查了它?