我用C#创建了一个功能应用时间触发器。 在逻辑内部,我调用并执行我在SQL Server中创建的存储过程。
执行存储过程需要8分钟以上,我在Azure功能应用日志中遇到以下错误:
2018-04-02T11:03:46.409 [错误]执行功能时出现异常: Functions.AbarIomWeeklyUsage。 mscorlib:抛出了异常 调用的目标。 .Net SqlClient数据提供程序:执行 超时已过期。完成之前已经过了超时时间 操作或服务器没有响应。等待操作 时间到。 2018-04-02T11:03:46.425 [错误]功能完成 (失败,Id = 1b85e7ef-ea52-4fd3-ab79-f27d188c5cac,持续时间= 30323ms)
到目前为止,我尝试了两件事:
1.利用应用程序连接字符串中的连接超时
2.在host.json
但是它仍然给我同样的错误30秒超时。
任何人都有相同的经验或解决方案吗?
答案 0 :(得分:2)
您肯定超过了默认命令超时(默认为30秒)。如果您没有设置SqlCommand.CommandTimeout,您将收到SqlException。将代码中的命令的CommandTimeout(没有配置)设置为10分钟(600秒),与功能超时相同。
答案 1 :(得分:2)
以下是有关如何执行此操作的代码段:
using (SqlCommand cmd = new SqlCommand(text, conn))
{
cmd.CommandTimeout = 60 * 60; // seconds
cmd.Parameters.AddWithValue("@parameter1", myparameter1);
// Execute the command and log the # rows affected.
var rows = await cmd.ExecuteNonQueryAsync();
log.Info($"{rows} rows were deleted");
}