til*_*arr 5 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
Run Code Online (Sandbox Code Playgroud)
例外文字:
[Microsoft.WindowsAzure.Storage.StorageException] {"远程服务器返回错误:(409)冲突."} Microsoft.WindowsAzure.Storage.StorageException
packages.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"targe tFramework ="net45"package id ="WindowsAzure.ServiceBus"version ="2.4.2.0"targetFramework ="net45"package id ="WindowsAzure.Storage"version ="4.2.0"targetFramework ="net45"
有任何想法吗?
我做了更多研究,发现如果存在创建同名队列/表的并发请求,就会发生这种情况。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);
}
Run Code Online (Sandbox Code Playgroud)
当我启动 JobHost 时,队列中只有 4 个项目,并且能够从 Azure 中看到该问题。使用免费托管。
| 归档时间: |
|
| 查看次数: |
2773 次 |
| 最近记录: |