预编译的Azure函数StorageTableInput绑定不工作
我正在尝试使用Donna Malayeri的“将.NET类库发布为函数应用程序”将Azure函数应用程序转换为预编译版本 我使用的计时器触发器具有使用类型化对象的StorageTable输入绑定。对象继承自“TableEntity”。虽然门户中的版本没有任何问题,但我的预编译版本会引发以下错误:预编译的Azure函数StorageTableInput绑定不工作,azure,azure-functions,azure-webjobs,Azure,Azure Functions,Azure Webjobs,我正在尝试使用Donna Malayeri的“将.NET类库发布为函数应用程序”将Azure函数应用程序转换为预编译版本 我使用的计时器触发器具有使用类型化对象的StorageTable输入绑定。对象继承自“TableEntity”。虽然门户中的版本没有任何问题,但我的预编译版本会引发以下错误: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ScheduleTrigger'. Microsoft.Azure.WebJ
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; }
}
}
{
"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
}
有几件事:
确保您引用的是Azure存储SDK 7.2.1或更低版本(理想情况下为7.2.1)
文档中记录了预编译函数的最新模型,以及完整的工具/VisualStudio集成。请考虑切换到那个。
您引用的存储SDK的版本是什么?我确实看到了您的其他答案,但由于这是“完全相同的问题”,我实际上没有尝试过。另外。。。答案来自一年多前。。。你会希望这样的事情能在现在解决,很高兴这有帮助。迁移到一个新版本并不是在一个次要的版本发布中就可以完成的,所以这在1.x中不会改变。2.0预览版使用最新版本,我们打算公开一种机制来软化这一限制。