簡體   English   中英

沒有活動的服務器。 后台任務將不被處理

[英]There are no active servers. Background tasks will not be processed

我有一個問題,已經幾天了,但仍然沒有解決方案。

我在C#Web應用程序日志中發現了此異常。

[2015-12-03 13:56:06] [錯誤] [] [執行“服務器引導程序”組件時發生錯誤。 將在00:05:00秒內重試執行(嘗試2147483647的120)。] [System.Data.SqlClient.SqlException(0x80131904):用戶“ A網絡帳戶”的登錄失敗。

在我看來,它正在使用網絡帳戶訪問SQL數據庫,並且因為未授予該網絡帳戶訪問數據庫的權限,因此登錄失敗並且服務器無法啟動。

但是,當我轉到Hangfire儀表板時,可以看到重復的作業,在我看來,hangfire可以使用正確的帳戶訪問數據庫以檢索重復的作業。

另外,在IIS服務器中,我們已經將應用程序池的標識設置為“ ApplicationPoolIdentity”。 因此,我們應該使用虛擬帳戶而不是網絡帳戶。

我是否可以知道有人遇到類似的問題並找到解決方案。 非常感謝您的幫助!

我在將Hangfire與SQL Server和EntityFramework Code First結合使用時遇到了相同的問題,其中EntityFramework負責創建數據庫,因此,該建議完全基於這種情況。

如果您使用的是EF Code First,則直到第一次創建並訪問上下文后,才會創建數據庫。

這意味着在“應用程序啟動”中,您的數據庫可能不存在。 Hangfire不會創建數據庫,它只會在現有數據庫中創建表。

因此,您可能會看到的是:

  1. 不存在數據庫。
  2. 您的應用程序啟動,並且Hangfire嘗試使其運行,由於EF尚未創建數據庫,服務器進程將引發錯誤。
  3. 由於hangfire服務崩潰對應用程序來說不是致命的,因此Web應用程序啟動完成。
  4. Web應用程序中的某些內容會調用EntityFramework。
  5. EF運行並創建數據庫(目前可能沒有hangfire表)
  6. 您訪問hangfire儀表板后,hangfire現在可以連接,並且看到表不存在,因此可以創建它們。 (現在您將在數據庫中看到表)
  7. 儀表板現在可以查看數據庫並向您顯示統計信息(可能有0台服務器正在運行),因此看起來一切正常。

我解決問題的方法是確保即使數據庫為空(不是表),也至少要創建它。 hangfire可以訪問它以安裝它的表並啟動,而EF可以訪問它並創建它的模式。

另外,(也許不是),GlobalConfiguration.Configuration.UseSqlServerStorage()應該在其他Hangfire啟動配置之前先運行。

希望有幫助!

史蒂夫

您應該創建后台作業服務器實例,請參見此處的文檔

暫無
暫無

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

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