5

我用 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)

到目前为止,我尝试了 2 件事:1. 利用应用程序连接字符串中的连接超时 2. 添加超时host.json

但它仍然给我同样的错误 30 秒超时。

任何人都经历过同样的事情或对此有解决方案吗?

4

2 回答 2

3

您肯定超过了默认的命令超时时间(默认值为 30 秒)。如果你没有设置SqlCommand.CommandTimeout你会得到一个 SqlException。将代码中命令的 CommandTimeout(没有对此进行配置)设置为 10 分钟(600 秒),与您的函数超时相同。

于 2018-04-03T10:10:20.967 回答
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");
}
于 2018-04-05T04:33:36.337 回答