我认为这是out of date documentation的情况,但我无法找到更新的例子。
使用以下代码会在webjob初始化时生成异常,并且会在“挂起的重启”循环中陷入困境。
public static void GenerateExcelFile(
[QueueTrigger("excel")] JobFile message,
Guid Id,
[Table("JobFile")] IDictionary<Tuple<string, string>, object> table,
{
//More Code
}
用“JobFile”替换“object”会产生相同的错误。这是一个相当长的堆栈跟踪,所以我只在这里发布它的顶部。使用ILSpy看起来这应该不起作用所以我不确定自从编写教程以来是否已删除此功能。
[09/13/2014 11:07:53 > be5c40: ERR ] Unhandled Exception:
Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:
Error indexing method 'GenerateExcelFile' --->
System.InvalidOperationException: Can't bind Table to type
'System.Collections.Generic.IDictionary`2[System.Tuple`2[System.String,System.String],System.Object]'.
[09/13/2014 11:07:53 > be5c40: ERR ] at Microsoft.Azure.WebJobs.Host.Tables.TableAttributeBindingProvider.TryCreateAsync(BindingProviderContext context)
[09/13/2014 11:07:53 > be5c40: ERR ] at Microsoft.Azure.WebJobs.Host.Bindings.CompositeBindingProvider.<TryCreateAsync>d__0.MoveNext()
我在SDK的0.5 beta和0.6 beta上试过这个。
答案 0 :(得分:1)
您指向的文档已过期。已删除表的IDictionary绑定。您可以使用ICollector绑定进行插入或替换,使用TableEntity / IQueryable绑定进行读取,使用CloudTable绑定进行修改实体。 以下示例演示了表的用法 https://github.com/Azure/azure-webjobs-sdk-samples/tree/master/BasicSamples/TableOperations https://github.com/bradygaster/siteMonitR
答案 1 :(得分:0)
因为我必须搜索一下才能找到如何使用ICollector绑定,我想我会分享。 看起来它属于Microsoft.Azure.WebJobs中的新版本,因此请确保您使用的是0.6.0-beta版本。
在你的情况下,它会像
public static void GenerateExcelFile(
[QueueTrigger("excel")] JobFile message,
Guid Id,
[Table("JobFile")] ICollector<JobFile> tableBinding
{
//More Code
}
public class JobFile
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Name { get; set; }
}
P.S。我没有测试过这个! :P
请参阅链接了解详情