[英]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.