预编译的Azure函数StorageTableInput绑定无法正常工作

时间:2017-09-26 08:14:34

标签: azure azure-functions azure-webjobs

我正在尝试使用Donna Malayeri中的“将.NET类库作为函数应用程序blog post转换为预编译版本。

我使用的计时器触发器使用类型化对象具有StorageTable输入绑定。该对象继承自' TableEntity '。虽然门户网站中的版本没有任何问题,但我的预编译版本会引发以下错误:

Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ScheduleTrigger'. Microsoft.Azure.WebJobs.Host: GenericArguments[0], 'MyScheduler.Schedule', on 'Microsoft.Azure.WebJobs.Host.Tables.TableExtension+TableToIQueryableConverter`1[TElement]' violates the constraint of type 'TElement'. mscorlib: GenericArguments[0], 'MyScheduler.Schedule', on 'Microsoft.Azure.WebJobs.Host.Tables.TableExtension+TableToIQueryableConverter`1[TElement]' violates the constraint of type parameter 'TElement'.

Azure功能代码如下所示:

using System;
using System.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage.Table;

namespace MyScheduler
{
    public class ScheduleTrigger
    {

        public static void Run(TimerInfo scheduleTimer, Queryable<Schedule> schedulesTable, ICollector<Schedule> scheduleQueueItem, TraceWriter log)
        {
            log.Info($"Start processing at: {DateTime.Now}.");

            // processing code here...

            log.Info($"Finished processing at: {DateTime.Now}.");
        }
    }

    public class Schedule : TableEntity
    {
        public string Name { get; set; }
        public DateTime LastRunAt { get; set; }
        public bool Active { get; set; }
        public string Endpoint { get; set; }
    }
}

' function.json '文件如下所示:

{
  "scriptFile": "..\\bin\\MyScheduler.dll",
  "entryPoint": "MyScheduler.ScheduleTrigger.Run",
  "bindings": [
    {
      "name": "scheduleTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * * * *"
    },
    {
      "type": "table",
      "name": "schedulesTable",
      "tableName": "schedules",
      "partitionKey": "Schedules",
      "connection": "AzureWebJobsStorage",
      "direction": "in"
    },
    {
      "type": "queue",
      "name": "scheduleQueueItem",
      "queueName": "schedulesqueue",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ],
  "disabled": true
}

1 个答案:

答案 0 :(得分:1)

有几件事:

  1. 确保您引用Azure Storage SDK 7.2.1或更低版本(理想情况下为7.2.1)
  2. 有关预编译函数的最新模型,包括完整工具/ Visual Studio集成,记录在案here。请考虑改用它。