2012-03-31 77 views
5

我有一個自託管的WCF應用程序,它使用基本HTTP綁定(無SSL),在.NET Framework 4.0的控制檯應用程序中運行。WCF WebGet Capture HTTP Referrer?

我有一個方法的WebGet屬性返回一個人類可讀的字符串作爲「煙霧測試」。

如果我有一個ASP.NET webforms頁面,我會使用Request.UrlReferrer或ServerVariables(「HTTP_REFERER」)來查看客戶端是否志願他們的重定向信息。

我怎麼用WCF來做到這一點?

謝謝。

回答

5

如果您使用的是BasicHttpBinding,則WebGet屬性可能被忽略(它用於使用webHttpBindingWebHttpBehavior的端點)。

如果您使用的是「web」端點(WebHttpBinding/WebHttpBehavior),則可以使用WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Referer]。如果您沒有對System.ServiceModel.Web.dll的引用,則還可以使用OperationContext中的HttpRequestMessageProperty

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