我希望在Azure表存储中插入或更新任何记录时触发。为此我用下面的方法创建了一个azure webjob ......
public static async Task ReadTableEntity(
[QueueTrigger("inputqueue")] Contact contactInQueue,
[Table("Contact", "ContactId", "CityId")] Contact contactInTable, TextWriter logger)
{
logger.WriteLine("triggered");
}
但是在更新表中的任何记录或插入新记录后,不会调用上述方法。
我希望在插入时调用上面的方法或更新表中的任何记录。
如果我错了,请纠正我。
答案 0 :(得分:1)
这个触发器并不像你期望的那样工作。对于那种情况,它需要是某种类型的"表触发,"哪个不存在。
来自文档:
某些代码段显示在名为手动的函数中使用的Table属性,即不使用其中一个触发器属性。
以外行人的话说: 没有任何内容可以帮助您对存储表进行任何更改。插入或更新表存储记录后,需要触发此调用。
在您的网络工作中,您可以添加类似的内容(来自documentation)以触发您的方法:
public class Program
{
static void Main(string[] args)
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("CreateQueueMessage"), new { value = "Hello world!" });
}
[NoAutomaticTrigger]
public static void CreateQueueMessage(
TextWriter logger,
string value,
[Queue("outputqueue")] out string message)
{
message = value;
logger.WriteLine("Creating queue message: ", message);
}
}
答案 1 :(得分:1)
众所周知,Azure WebJobs表触发器有类似的issue。此外,有人发布了功能请求问题Add Trigger for Azure Table Storage。我会报告此功能请求,您可以尝试按照此tutorial构建自己的绑定扩展,或者按照Mark C。的解决方案手动触发Azure表存储中的插入/更新记录以获得解决方法