4

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

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

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

异常绑定参数 'req' -> 从 'System.String' 到 'MyCommon.KeyType' 的无效转换。”

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

4

1 回答 1

4

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

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

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

Enum.TryParse(keyTypeValue, out KeyType keyType);
于 2017-06-02T01:12:14.443 回答