1

我认为这是文档过时的情况,但我找不到更新的示例。

使用以下代码会在 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 上试过这个。

4

2 回答 2

1

您指向的文档已过时。删除了表的 IDictionary 绑定。您可以使用 ICollector 绑定进行插入或替换,使用 TableEntity/IQueryable 绑定进行读取,使用 CloudTable 绑定修改实体。以下示例演示了表的使用 https://github.com/Azure/azure-webjobs-sdk-samples/tree/master/BasicSamples/TableOperations https://github.com/bradygaster/siteMonitR

于 2014-09-13T20:55:24.300 回答
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; }
}

PS我没有测试过这个!:P

详情见链接

http://blogs.msdn.com/b/webdev/archive/2014/09/12/announcing-the-0-6-0-beta-preview-of-microsoft-azure-webjobs-sdk.aspx

于 2014-09-16T14:30:47.173 回答