2012-03-31 2 views
5

J'ai une application WCF auto-hébergée utilisant Basic HTTP Binding, sans SSL, s'exécutant dans une application console sur .NET Framework 4.0.Référent HTTP de WCF WebGet Capture?

J'ai un attribut WebGet sur une méthode à laquelle renvoie une chaîne lisible par l'homme en tant que "test de fumée".

Si j'avais une page de formulaires Web ASP.NET, j'utiliserais Request.UrlReferrer ou ServerVariables ("HTTP_REFERER") pour voir si le client offre ses informations de redirection. Comment puis-je faire avec WCF?

Merci.

Répondre

5

Si vous utilisez BasicHttpBinding, l'attribut WebGet est probablement ignoré (il est utilisé pour les terminaux qui utilisent le webHttpBinding et le WebHttpBehavior). Si vous utilisez un point de terminaison "Web" (WebHttpBinding/WebHttpBehavior), vous pouvez utiliser WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Referer]. Si vous ne disposez pas d'une référence à System.ServiceModel.Web.dll, vous pouvez également utiliser le HttpRequestMessageProperty du OperationContext:

HttpRequestMessageProperty prop; 
prop = (HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name]; 
var referer = prop.Headers[HttpRequestHeader.Referer] 
Questions connexes