【问题标题】:Asp.net web config file change for time out exceptionAsp.net web 配置文件更改超时异常
【发布时间】:2018-01-17 17:43:12
【问题描述】:

我正在开发一个基于 asp.net 技术构建的 Web 应用程序,并且在按钮单击事件上有一个存储过程调用,执行时间大约为 1 分钟到 2 分钟,并且页面被抛出一次异常它通过了 30 秒。 代码文件丢失,因为应用程序是由其他人开发的,但我可以通过 IIS 访问 web.config 文件。

需要在 web 配置文件中进行哪些更改来解决问题:

以下是我得到的错误:

以下是错误:

“/”应用程序中的服务器错误。

等待操作超时 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ComponentModel.Win32Exception:等待操作超时

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[Win32Exception (0x80004005): 等待操作超时]

[SqlException (0x80131904): 超时。在操作完成之前超时时间已过或服务器没有响应。] System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,Action`1 wrapCloseInAction)+388 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔调用者HasConnectionLock,布尔异步关闭)+717 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61

【问题讨论】:

  • 如果您有一个执行时间超过几秒钟的存储过程,那么您真的不应该在 HTTP 请求/响应的上下文中调用它。您应该在后台进程中运行它。有一个单独的应用程序(可能是一个使用TopShelf 的 Windows 服务)。使用 HTTP 调用或消息队列在您的 Web 服务和后台进程之间进行通信。
  • 感谢您的建议,这就是我的想法,只是在寻找使用 web config 的解决方案,请建议我任何对 web config 更改有用的方法
  • 您需要更改的是not just web.configcommand timeout is by default 30 seconds。如果要长时间运行命令,则需要更改它。
  • 正如我已经提到的,我可以访问网络配置文件和存储过程:(
  • 正如我所指出的,这还不够。如果您无权访问源代码,那么您需要弄清楚谁可以访问并请求他们修复它。

标签: c# asp.net iis stored-procedures web-config


【解决方案1】:

使用SqlCommand.CommandTimeout Property

获取或设置在终止尝试执行命令并生成错误之前的等待时间。

默认时间:等待命令执行的时间(以秒为单位)。 默认值为 30 秒。

在 weweb.config 中更新您的ConnectionString 类似

 "Data Source=**;Initial Catalog=**;Timeout=90;Persist Security Info=True;User ID=**;Password=**"

在cs文件中读取这个 SqlCommand command = new SqlCommand(queryString, connection); command.CommandTimeout = ConfigurationManager.AppSettings["CommandTimeOut"]

或者如果你想在查询时直接设置

// Setting command timeout to 90 seconds
command.CommandTimeout = 90;

【讨论】:

  • 正如我已经提到的,我没有代码,只有网络配置可供我使用
  • ok ,然后只更新上面的连接字符串作为答案。连接字符串包含Timeout=90??
猜你喜欢
  • 2013-05-20
  • 2014-08-22
  • 2020-03-28
  • 2014-04-05
  • 2011-05-29
  • 2018-04-10
  • 2016-06-28
  • 2014-01-17
  • 1970-01-01
相关资源
最近更新 更多