簡體   English   中英

如何在執行C#Azure功能期間避免SqlClient超時錯誤?

[英]How can I avoid a SqlClient timeout error during execution of a C# Azure Function?

我用C#創建了一個函數app time觸發器。 在邏輯內部,我調用並執行我在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秒超時相同的錯誤。

有沒有經歷過相同或有解決方案?

您肯定超過了默認命令超時(默認為30秒)。 如果未設置SqlCommand.CommandTimeout ,則會出現SqlException。 將代碼中的命令的CommandTimeout(沒有配置)設置為10分鍾(600秒),與功能超時相同。

以下是有關如何執行此操作的代碼段:

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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM