2012-03-31 2 views
5

У меня есть самодостаточное приложение WCF с использованием основного HTTP-привязки, без SSL, работающего в консольном приложении на .NET Framework 4.0.WCF WebGet Capture HTTP Referrer?

У меня есть атрибут WebGet на метод, который возвращает читаемую человеком строку как «тест на дым».

Если у меня была страница веб-форм ASP.NET, я бы использовал Request.UrlReferrer или ServerVariables («HTTP_REFERER»), чтобы узнать, желает ли клиент их перенаправлять информацию.

Как это сделать с WCF?

Спасибо.

ответ

5

Если вы используете BasicHttpBinding, атрибут WebGet вероятно игнорируется (он используется для конечных точек, которые используют webHttpBinding и WebHttpBehavior).

Если вы используете «веб-конечную точку» (WebHttpBinding/WebHttpBehavior), вы можете использовать WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Referer]. Если у вас нет ссылки на System.ServiceModel.Web.dll, вы можете также использовать HttpRequestMessageProperty из OperationContext:

HttpRequestMessageProperty prop; 
prop = (HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name]; 
var referer = prop.Headers[HttpRequestHeader.Referer] 
Смежные вопросы