Azure Webjob HTTP 409冲突错误

本文关键字:冲突 错误 HTTP Webjob Azure | 更新日期: 2023-09-27 18:16:46

我有一个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。{"远程服务器返回一个错误:(409)冲突。"} Microsoft.WindowsAzure.Storage.StorageException

packages.config:

id = " Microsoft.Azure

包。乔布斯"version = " 0.3.1-beta"targetFramework="net45"包id="Microsoft.Azure.Jobs.Core"版本="0.3.1-beta" targetFramework="net45"包id = " Microsoft.Azure.Jobs。ServiceBus 0.3.1-beta"version =targetFramework="net45"包id="Microsoft. net "Bcl 1.1.7"version =targetFramework="net45"包id="Microsoft.Bcl.Build"版本="1.0.14" targetFramework="net45"包id = " Microsoft.Data。Edm" version="5.6.0" targetFramework="net45"
包id = " Microsoft.Data。OData 5.6.0"version =targetFramework="net45"包id="Microsoft.Data.Services.Client"版本="5.6.0" targetFramework="net45"包id = " Microsoft.Net。Http" version="2.2.19" targetFramework="net45"
包id = " Microsoft.WindowsAzure.ConfigurationManager "版本="2.0.3" targetFramework="net45"包id="Newtonsoft. net "Json"版本="6.0.4" targetFramework="net45"包id="System. net "空间"版本="5.6.0" targetFramework="net45"包id = " WindowsAzure。MobileServices 1.3.0-alpha4"version =targetFramework="net45"包id="WindowsAzure. net "ServiceBus"版本="2.4.2.0" targetFramework="net45"包id = " WindowsAzure。存储" version="4.2.0" targetFramework="net45"

任何想法?

Azure Webjob HTTP 409冲突错误

修改webjob-publish-settings中的jobrecurrencfrequency。json到"小时"为我的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已过时。

我必须填写intervaljobRecurrenceFrequency设置参数

在Microsoft.WindowsAzure.Storage抛出一个版本后不久,我们开始从Azure Web Jobs收到一个409冲突异常。在此发布之前不久,我们已经实现了旧blob的归档。事实证明,在我们的案例中,存储(归档)中有只读blob是抛出此异常背后的原因。并没有立即证明这是罪魁祸首,我怀疑webjob开始撞击存档的blobs需要一段时间。当我们从blob存储中删除存档消息后,webjob就可以继续运行了。

当我得到这个错误时,我意识到我正在调用的Jenkins工作没有我传递给它的参数。一旦我添加了参数,它工作得很好。