2012-03-31 10 views
5

Tengo una aplicación WCF auto-alojada que usa Enlace Básico Básico, sin SSL, que se ejecuta en una aplicación de consola en .NET Framework 4.0.WCF WebGet Capture HTTP Referrer?

Tengo un atributo WebGet en un método al que se le devuelve una cadena legible por humanos como una "prueba de humo".

Si tuviera una página de formularios web ASP.NET, usaría Request.UrlReferrer o ServerVariables ("HTTP_REFERER") para ver si el cliente ofrece voluntariamente su información de redirección.

¿Cómo puedo hacer eso con WCF?

Gracias.

Respuesta

5

Si está utilizando BasicHttpBinding, el atributo WebGet probablemente está siendo ignorada (se usa para los puntos finales que utilizan el webHttpBinding y la WebHttpBehavior).

Si está utilizando un punto final "web" (WebHttpBinding/WebHttpBehavior), puede usar el WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Referer]. Si usted no tiene una referencia a System.ServiceModel.Web.dll, también se puede utilizar el HttpRequestMessageProperty del OperationContext:

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