2017-08-20 1 views
0

Je veux partager une certaine logique entre plusieurs fonctions qui semble maintenant être partiellement réalisable en utilisant Function Filters dans les fonctions azur mais dans certains cas, je ne veux pas continuer l'exécution de la fonctionner et être capable de renvoyer un résultat au fournisseur de liaison (comme retourner un résultat de la fonction elle-même).Ignorer la fonction invocation et la valeur de retour avec le filtre de fonction personnalisée

En regardant le code, la seule façon de court-circuiter l'appel du IFunctionInvoker intérieur FunctionInvocationFilterInvoker est de lancer une exception dans le filtre d'invocation personnalisé. Le seul problème avec cette approche est que l'exception surgira jusqu'à l'hôte et provoquera un échec/des tentatives etc. ailleurs.

Cette approche ne me permet pas non plus de définir un autre fournisseur de liaison de retour de valeur de retour. J'ai vu que nous pourrions envelopper dans notre propre IFunctionInvoker mais je me demandais s'il y avait une meilleure façon d'y parvenir?

Code executing filters

+0

Dans votre cas, est-il possible d'écrire une logique pour contrôler les fonctions d'invocation dans la fonction Azure? (Selon les informations du message de paramètre à la fonction correspondante invocation.) –

+0

l'exécution de la fonction est appelée ici - https://github.com/Azure/azure-webjobs-sdk/blob/3696dd28df66996b1adcc0697f0d0f88f865cb64/src/Microsoft.Azure.WebJobs.Host/ Executors/FunctionExecutor.cs # L569 –

+0

Je m'attendais à un objet 'result' (filterContext.Result) que je pourrais éventuellement retourner, tout comme ActionFilters dans MVC –

Répondre

1

pas encore possible, mais cela est quelque chose que nous allons certainement activer. Nous suivons cette capacité dans notre repo here.

+0

Fini par regarder moi-même et soulevé le premier numéro avec le PR esquissé :-) merci pour la réponse si oublié a demandé cette –