2010-11-03 8 views
0

J'ai besoin d'exécuter du code similaire à un module HTTP chaque fois qu'une requête arrive dans un service WCF. Certains exemples de code peuvent être l'authentification, la limitation, la journalisation, etc. Quel est le meilleur moyen d'exécuter un module à chaque fois qu'une demande est faite?Comment exécuter du code sur chaque demande de service?

Modifier Pour clarification

Nous allons faire une ou deux choses. Tout d'abord, nous devons authentifier toutes les demandes. Chaque requête nécessite que l'utilisateur transmette un ensemble d'informations d'identification, par exemple une clé API. Nous devons valider que la clé est correcte avant d'autoriser la demande. En ce qui concerne la limitation, nous aurons besoin de limiter le nombre de requêtes qu'un utilisateur spécifique peut effectuer. Disons 100 par heure ou quelque chose de similaire.

+0

Veuillez être plus précis, comme le demande tomasr ci-dessous. WCF est très flexible - vous voudrez être plus clair sur ce que vous essayez d'accomplir. –

Répondre

2

Il existe plusieurs points d'extension dans WCF qui peuvent être utilisés pour ce que vous voulez. Cependant, vous devrez probablement utiliser différents points d'extension à des fins différentes. Par exemple, pour la consignation, vous pouvez utiliser IDispatchMessageInspector ou IParameterInspector. Pour la gestion des erreurs, vous pouvez utiliser IErrorHandler.

La limitation n'est pas quelque chose que vous utilisez généralement pour les extensions, car dans la plupart des cas, le throttling settings intégré peut suffire. En ce qui concerne l'authentification, eh bien, la sécurité a son propre ensemble de points d'extension et il y a plusieurs options, alors peut-être que vous pourriez clarifier (ou poster une nouvelle question) avec des spécificités afin que nous puissions recommander le mécanisme approprié.

Questions connexes