2014-09-13 54 views
0

我認爲這是out of date documentation的一種情況,但我無法找到更新的示例。FunctionIndexingException無法將表綁定到Azure WebJob上加載

使用以下代碼會在webjob的初始化過程中生成一個異常,並且它會陷入「pending restart」循環中。

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() 

我試過這個0.5 beta和0.6 beta的SDK。

回答

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

查看鏈接以細節

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