Azure Webjob HTTP 409冲突错误

时间:2014-08-06 20:20:09

标签: c# azure-webjobssdk

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

packages.config:

  

package id =&#34; Microsoft.Azure.Jobs&#34;版本=&#34; 0.3.1-β&#34;   targetFramework =&#34; net45&#34; package id =&#34; Microsoft.Azure.Jobs.Core&#34;   版本=&#34; 0.3.1-β&#34; targetFramework =&#34; net45&#34;包   ID =&#34; Microsoft.Azure.Jobs.ServiceBus&#34;版本=&#34; 0.3.1-β&#34;   targetFramework =&#34; net45&#34; package id =&#34; Microsoft.Bcl&#34;版本=&#34; 1.1.7&#34;   targetFramework =&#34; net45&#34; package id =&#34; Microsoft.Bcl.Build&#34;   版本=&#34; 1.0.14&#34; targetFramework =&#34; net45&#34;包   ID =&#34; Microsoft.Data.Edm&#34;版本=&#34; 5.6.0&#34; targetFramework =&#34; net45&#34;
  package id =&#34; Microsoft.Data.OData&#34;版本=&#34; 5.6.0&#34;   targetFramework =&#34; net45&#34; package id =&#34; Microsoft.Data.Services.Client&#34;   版本=&#34; 5.6.0&#34; targetFramework =&#34; net45&#34;包   ID =&#34; Microsoft.Net.Http&#34;版本=&#34; 2.2.19&#34; targetFramework =&#34; net45&#34;
  package id =&#34; Microsoft.WindowsAzure.ConfigurationManager&#34;   版本=&#34; 2.0.3&#34; targetFramework =&#34; net45&#34; package id =&#34; Newtonsoft.Json&#34;   版本=&#34; 6.0.4&#34; targetFramework =&#34; net45&#34; package id =&#34; System.Spatial&#34;   版本=&#34; 5.6.0&#34; targetFramework =&#34; net45&#34;包   ID =&#34; WindowsAzure.MobileServices&#34;版本=&#34; 1.3.0-的α4&#34;   targetFramework =&#34; net45&#34; package id =&#34; WindowsAzure.ServiceBus&#34;   版本=&#34; 2.4.2.0&#34; targetFramework =&#34; net45&#34;包   ID =&#34; WindowsAzure.Storage&#34;版本=&#34; 4.2.0&#34; targetFramework =&#34; net45&#34;

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

将webjob-publish-settings.json中的jobRecurrenceFrequency更改为“Hour”适用于我的https://error404.atomseo.com项目!

我遇到了同样的问题,事实证明发布过程失败了,因为我将其设置为每10分钟重复一次,而应用程序是在免费套餐中运行的。正如MS在此描述的那样:

https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/

可以使用除分钟定义之外的所有频率进行部署。

答案 1 :(得分:2)

我做了一些研究,可以看到如果有并发请求创建具有相同名称的队列/表,就会发生这种情况。 Azure似乎拒绝使用自定义409 http代码的那些请求,这些代码适用于应用程序。

要在最新的Azure SDK中重现,只需要一个webjob来处理队列,并且只有在队列中有许多请求后才启动JobHost。在Job函数中将blob作为TextWriter获取并写入其中。确保blob&#39; logs / webjob1&#39; JobHost开始看到问题时不存在。

public static void ProcessQueueMessage([QueueTrigger("testqueue1")] string inputText,
       [Blob("logs/webjob1")]TextWriter writer)
        {
            writer.WriteLine(inputText);
        }

当我启动JobHost时,队列中只有4个项目,并且能够从Azure中看到问题。使用免费托管。

答案 2 :(得分:0)

我得到了相同的错误代码

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设置参数。

答案 3 :(得分:0)

在从 Microsoft.WindowsAzure.Storage 抛出一个版本后不久,我们开始收到来自 Azure Web 作业的 409 冲突异常。在此版本发布前不久,我们实施了旧 blob 的存档。事实证明,在我们的存储(存档)中具有只读 blob 是在我们的案例中引发此异常的原因。并不是很明显这是罪魁祸首,我怀疑在 webjob 开始命中存档的 blob 之前需要一些时间。一旦我们从 Blob 存储中删除了存档的消息,网络作业就能够恢复。