2009-08-06 6 views
1

Fondamentalement, je veux obtenir des requêtes HTTP à partir d'une source différente d'une socket d'écoute. Cependant, comme les bindings fournis ne supportent pas cela, je suis en train de construire ma propre reliure.Comment stocker les informations d'en-tête dans une liaison HTTP WCF personnalisée

Ma liaison actuelle est constituée de WebMessageEncoder et d'un objet TransportBindingElement personnalisé, qui fait référence à un ChannelListener personnalisé qui utilise un canal personnalisé qui implémente l'interface IReplyChannel. Le ServiceModel appelle la méthode "receiveRequest", qui doit ensuite renvoyer un RequestContext.

Cependant, la classe RequestContext contient uniquement une propriété RequestMessage dans laquelle je devrais placer l'objet Message. De ce fait, je ne sais pas où placer tous les en-têtes HTTP nécessaires pour faire correspondre les UriTemplates dans les attributs WebGet/WebInvoke.

Pourriez-vous s'il vous plaît aidez-moi de en poser un? :)

Salutations

Répondre

1

Le répartiteur WebHttp regarde deux choses, de ce que je me souviens:

  • Le HttpRequestMessageProperty, que vous devez créer et stocker dans la collection Propriétés du message de demande produit par votre canal de transport.
  • L'URL associée à la demande, que vous voulez vous assurer que votre canal de transport remplit avant de transmettre le message dans la pile de canaux (cela doit être enregistré dans msg.Headers.To).
Questions connexes