我正在尝试使用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
}
答案 0 :(得分:1)
有几件事: