升级到. NET5 for Azure Function后,此签名会引发以下异常。
Bash我已经按照留档https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid-trigger?tabs=csharp执行了
[Function(nameof(CustomerCreated))]
public async Task CustomerCreated([EventGridTrigger] EventGridEvent eventGridEvent, FunctionContext functionContext)
{
// My implementation
}
系统。NotSupportedException:“不支持对没有无参数构造函数、单一参数化构造函数或用“JsonConstructorAttribute”批注的参数化构造函数的类型进行反序列化。键入“Azure”。messaging . event grid . eventgridevent。路径:$ |行号:0 |字节位置行:1。
如何从EventGrid接收事件?
html" target="_blank">执行此操作的新方法似乎是Azure.Messaging
命名空间中的CloudEvent
。
(附带说明一下,数据属性是区分大小写的,我不确定以前是不是。)
public async Task CustomerCreated([EventGridTrigger] CloudEvent eventGridEvent, FunctionContext functionContext)
{
// [...]
}
更新:
当部署到Azure并从具有Azure功能作为endpoint的真实事件网格接收事件时,这会中断。但在使用ngrok和webhook进行本地测试时,效果良好。回到原点。
在对过时的示例进行了无休止的谷歌搜索之后,我在本文档中发现了一个注释,指向此示例,表明您需要创建自定义类型(看起来就像EventGridEvent一样)。
经过测试,我发现这实际上是有效的:
传递一个< code>string而不是< code>EventGridEvent,并使用< code>EventGridEvent中的实用函数解析实际事件。
[Function(nameof(CustomerCreated))]
public async Task CustomerCreated([EventGridTrigger] string data, FunctionContext functionContext)
{
var eventGridEvent = EventGridEvent.Parse(BinaryData.FromString(data));
// Rest of code
}
另一个相关的警告是,您无法从门户创建函数,但需要从命令行运行它,如下所示:
az eventgrid event-subscription create --name customer-created \
--source-resource-id <event-grid-topic-resource-id> \
--endpoint <azure-func-resource-id> --endpoint-type azurefunction
(可以在http://resources.azure.com/找到资源id:s)
你好,微软;
用这种方法在. NET5上运行Azure函数感觉不是很GA。我真的希望能够用官方库传递来自其他Azure服务的EventGridEvent之类的类型化对象。
我真的认为.NET5/dotnet隔离版上的EventGridEvent应该与以前的.NET版本和公共示例中的Azure函数在相同级别上兼容。
问题内容: 如何使用Python列表(例如)作为函数的参数,例如: 问题答案: 您可以使用splat运算符执行此操作: 这使函数将每个列表项作为单独的参数接收。这里有一个描述:http : //docs.python.org/tutorial/controlflow.html#unpacking- argument-lists
我是Kotlin的新手,很难理解下面的代码 所以这个函数叫做,它的输入参数是一个名为的函数,它是
函数可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调。下面是一个将函数作为参数的简单例子(function_parameter.go): package main import ( "fmt" ) func main() { callback(1, Add) } func Add(a, b int) { fmt.Printf("The sum
如果我不使用' a '和' b '变量,一切正常,否则,C返回: 错误:无法转换“main()::” 注意:初始化'void f(int, void(*)(int))'的参数2
我创建了一个从HashMap中删除学生的方法。当id为NULL时,它会抛出一个异常。有人知道它为什么不起作用吗? 公共类应用程序{public static void main(String[]args){ }