34 votes

Quel est l'équivalent WCF de HttpContext.Current.Request.RawUrl?

J'ai quelques RESTful services s'exécutant dans un pur WCF contexte (c'est à dire ASP.NET la compatibilité n'est pas activé, et donc il n'y a pas d' HttpContext.Current objet disponible).

Les Url vers les services sont réécrits au début de la demande en utilisant un IHttpModule (qui à ce stade n'ont un HttpContext et réécrit en utilisant HttpContext.Current.RewritePath) pour se débarrasser de choses comme l' .svc extension de l'URL.

Cependant, j'ai besoin d'accéder à l'URL d'origine qui a été demandé dans la FMC de l'infrastructure. Est-il équivalent à HttpContext.Current.Request.RawUrl sur le OperationContext ou WebOperationContext classes n'importe où? À l'aide de WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri retourne l'URL réécrite pas l'original.

40voto

christophercotton Points 3969

Vous pouvez obtenir le noeud final actuellement ciblé et le Uri correspondant en procédant comme suit:

 OperationContext.Current.RequestContext.RequestMessage.Headers.To
 

que je pense est la même chose que:

 OperationContext.Current.IncomingMessageHeaders.To
 

Ceci est un objet System.Uri , et je crois que vous pouvez obtenir le OriginalString ou PathAndQuery , ou n’importe quelle partie de votre choix.

2voto

aditya potdar Points 254

essayez quelque chose comme ça:

 OperationContext.Current.Channel.LocalAddress.Uri.AbsoluteUri
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X