2010-10-12 19 views
1

J'ai un WCF REST Service:Les en-têtes HTTP peuvent-ils être liés aux arguments du service REST WCF?

[ServiceContract] 
public IService 
{ 
    [WebGet] 
    [OperationContract] 
    Data GetData(UserInfo userInfo); 
} 

UserInfo est une classe:

public class UserInfo 
{ 
    public string UserName { get; set; } 
    public string Password { get; set; } 
} 

Je veux UserName et Password propriétés remplir des en-têtes HTTP spécifiques, mais pas de corps de la demande. Comment pourrais-je l'implémenter?

Répondre

2

WCF offre quelques points d'extensibilité qui pourraient être utiles pour ce scénario. Je suggère que vous devriez vérifier IParameterInspector ou IOperationInvoker. Les deux peuvent travailler avec des paramètres d'entrée. Ensuite, vous devrez créer IOperationBehavior en tant qu'attribut et marquer votre méthode avec cet attribut. Mais je pense que ce scénario aura un problème plus important. Vous utilisez WebGet et le type complexe et vous n'avez aucun modèle Uri qui sera mappé aux paramètres - ce n'est pas possible. Les opérations WebGet peuvent utiliser uniquement des paramètres avec des types de base et lorsque vous créez un tel paramètre en fonctionnement, il doit être mentionné dans le modèle Uri ou une exception est déclenchée.