将字符串参数绑定到 Azure 函数中的枚举类型

Binding a string parameter to Enum type in AzureFunction

我正在尝试将字符串路由参数绑定到枚举类型,如下所示

public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "ValidateKey/{keyType}/{key}")]HttpRequestMessage req, KeyType keyType, string key, TraceWriter log)

当我到达终点时,代码给出了以下异常。

Exception binding parameter 'req' -> Invalid cast from 'System.String' to 'MyCommon.KeyType'."

模型绑定器无法将字符串参数绑定到枚举类型。 在 MVC 或 WebAPI 应用程序中,绑定到 Enum 工作正常,但似乎 AzureFunction 不支持绑定。 无论如何要在 AzureFunction 中插入自定义 ModelBinder 以使其工作?

绑定过程有点不同,我们目前没有公开插入自定义绑定器的机制。

我打开这个问题是为了解决我们目前不支持绑定到枚举的具体问题:https://github.com/Azure/azure-webjobs-sdk-script/issues/1564

与此同时,有一些解决方法,但最直接的方法是绑定到一个字符串并将该参数解析为您的枚举,作为您函数的一部分。不理想,但一个简单的衬垫:

Enum.TryParse(keyTypeValue, out KeyType keyType);