[英]Azure Webjob HTTP 409 Conflict errors
我有一個 C# WebJob,它與 alpha WebJob api 配合得很好。我剛剛將它更新到測試版,在修復連接字符串和命名空間后,當 JobHost 嘗試連接時,我收到 HTTP 409(沖突)錯誤。
這是調用堆棧:
Microsoft.WindowsAzure.Storage.dll!Microsoft.WindowsAzure.Storage.Table.Protocol.TableOperationHttpResponseParsers.TableOperationPreProcess(Microsoft.WindowsAzure.Storage.Table.TableResult result, Microsoft.WindowsAzure.Storage.Table.TableOperation operation, System.Net.HttpWebResponse resp, System.Exception ex) Unknown
Microsoft.WindowsAzure.Storage.dll!Microsoft.WindowsAzure.Storage.Table.TableOperation.InsertImpl.AnonymousMethod__2(Microsoft.WindowsAzure.Storage.Core.Executor.RESTCommand<Microsoft.WindowsAzure.Storage.Table.TableResult> cmd, System.Net.HttpWebResponse resp, System.Exception ex, Microsoft.WindowsAzure.Storage.OperationContext ctx) Unknown
Microsoft.WindowsAzure.Storage.dll!Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync<Microsoft.WindowsAzure.Storage.Table.TableResult>(Microsoft.WindowsAzure.Storage.Core.Executor.RESTCommand<Microsoft.WindowsAzure.Storage.Table.TableResult> cmd, Microsoft.WindowsAzure.Storage.RetryPolicies.IRetryPolicy policy, Microsoft.WindowsAzure.Storage.OperationContext operationContext) Unknown
Microsoft.WindowsAzure.Storage.dll!Microsoft.WindowsAzure.Storage.Table.TableOperation.Execute(Microsoft.WindowsAzure.Storage.Table.CloudTableClient client, Microsoft.WindowsAzure.Storage.Table.CloudTable table, Microsoft.WindowsAzure.Storage.Table.TableRequestOptions requestOptions, Microsoft.WindowsAzure.Storage.OperationContext operationContext) Unknown
Microsoft.WindowsAzure.Storage.dll!Microsoft.WindowsAzure.Storage.Table.CloudTable.Execute(Microsoft.WindowsAzure.Storage.Table.TableOperation operation, Microsoft.WindowsAzure.Storage.Table.TableRequestOptions requestOptions, Microsoft.WindowsAzure.Storage.OperationContext operationContext) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.Host.Storage.SdkCloudStorageAccount.Table.GetOrInsert<Microsoft.Azure.Jobs.Host.Runners.HostEntity>(Microsoft.Azure.Jobs.Host.Runners.HostEntity entity) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.Host.Runners.HostTable.GetOrCreateHostId(string hostName) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.JobHostContext.JobHostContext(string dashboardConnectionString, string storageConnectionString, string serviceBusConnectionString, Microsoft.Azure.Jobs.ITypeLocator typeLocator, Microsoft.Azure.Jobs.INameResolver nameResolver) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.JobHost.GetHostContext(Microsoft.Azure.Jobs.ITypeLocator typesLocator, Microsoft.Azure.Jobs.INameResolver nameResolver) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.JobHost.JobHost(System.IServiceProvider serviceProvider) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.JobHost.JobHost(Microsoft.Azure.Jobs.JobHostConfiguration configuration) Unknown
Microsoft.Azure.Jobs.Host.dll!Microsoft.Azure.Jobs.JobHost.JobHost() Unknown
異常文本:
[Microsoft.WindowsAzure.Storage.StorageException] {“遠程服務器返回錯誤:(409) 沖突。”} Microsoft.WindowsAzure.Storage.StorageException
包.config:
package id="Microsoft.Azure.Jobs" version="0.3.1-beta" targetFramework=.net45" package id="Microsoft.Azure.Jobs.Core" version="0.3.1-beta" targetFramework=.net45" package id="Microsoft.Azure.Jobs.ServiceBus" version="0.3.1-beta" targetFramework=.net45" package id="Microsoft.Bcl" version="1.1.7" targetFramework=.net45" package id=" Microsoft.Bcl.Build" version="1.0.14" targetFramework=.net45" package id="Microsoft.Data.Edm" version="5.6.0" targetFramework=.net45"
package id="Microsoft.Data.OData" version="5.6.0" targetFramework=.net45" package id="Microsoft.Data.Services.Client" version="5.6.0" targetFramework=.net45" package id=" Microsoft.Net.Http" version="2.2.19" targetFramework=.net45"
package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework=.net45" package id="Newtonsoft.Json" version="6.0.4" targetFramework=.net45" package id="System.Spatial" version="5.6.0" targetFramework=.net45" package id="WindowsAzure.MobileServices" version="1.3.0-alpha4" targetFramework=.net45" package id="WindowsAzure.ServiceBus" version="2.4.2.0" targetFramework =.net45" package id="WindowsAzure.Storage" version="4.2.0" targetFramework=.net45"
有任何想法嗎?
將 webjob-publish-settings.json 中的 jobRecurrenceFrequency 更改為“Hour”適用於我的https://error404.atomseo.com項目!
我遇到了同樣的問題,結果發布過程失敗了,因為我將它設置為每 10 分鍾重復一次,而應用程序旨在在免費層中運行。 正如 MS 在此處描述的那樣:
https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/
可以使用除以分鍾定義的頻率之外的所有頻率進行部署。
我做了一些更多的研究,可以看到如果有創建同名隊列/表的並發請求,就會發生這種情況。 Azure 似乎拒絕那些帶有用於應用程序的自定義 409 http 代碼的請求。
要在最新的 Azure SDK 中重現,只需要一個 webjob 來處理隊列,並且只有在隊列中有很多請求后才啟動 JobHost。 在 Job 函數中獲取 blob 作為 TextWriter 並寫入其中。 確保當 JobHost 開始發現問題時,blob 'logs/webjob1' 不存在。
public static void ProcessQueueMessage([QueueTrigger("testqueue1")] string inputText,
[Blob("logs/webjob1")]TextWriter writer)
{
writer.WriteLine(inputText);
}
當我啟動 JobHost 時,隊列中只有 4 個項目,並且能夠從 Azure 看到問題。 使用免費托管。
我收到相同的錯誤代碼
2018-08-18T23:06:02.2102822Z ##[error]Conflict 2018-08-18T23:06:02.2119417Z ##[error]Unable to retrieve connection details for Azure App Service : KaktusWatch. Status Code: 409 (Conflict) 2018-08-18T23:06:02.2150200Z ##[section]Finishing: Deploy Azure App Service
就我而言, webjob-publish-settings.json已過時。
我必須填寫interval
和jobRecurrenceFrequency
設置參數。
在從 Microsoft.WindowsAzure.Storage 拋出一個版本后不久,我們開始收到來自 Azure Web 作業的 409 沖突異常。 在此版本發布前不久,我們實施了舊 blob 的存檔。 事實證明,在我們的存儲(存檔)中具有只讀 blob 是在我們的案例中引發此異常的原因。 並不是很明顯這是罪魁禍首,我懷疑在 webjob 開始命中存檔的 blob 之前需要一些時間。 一旦我們從 blob 存儲中刪除了存檔的消息,webjob 就能夠恢復。
當我收到此錯誤時,我意識到我正在調用的 Jenkins 作業沒有我傳遞給它的參數。 添加參數后,它工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.