2012-03-31 30 views
5

Tôi có một ứng dụng WCF tự lưu trữ bằng cách sử dụng Basic HTTP Binding, không có SSL, chạy trong một ứng dụng giao diện điều khiển trên .NET Framework 4.0.WCF WebGet Capture HTTP Referrer?

Tôi có Thuộc tính WebGet trên phương thức trả về chuỗi có thể đọc được bằng con người như là "thử nghiệm khói".

Nếu tôi có trang web ASP.NET, tôi sẽ sử dụng Request.UrlReferrer hoặc ServerVariables ("HTTP_REFERER") để xem khách hàng có tình nguyện thông tin chuyển hướng của họ hay không.

Tôi có thể làm điều đó với WCF bằng cách nào?

Cảm ơn.

Trả lời

5

Nếu bạn đang sử dụng BasicHttpBinding, thuộc tính WebGet có thể bị bỏ qua (được sử dụng cho các điểm cuối sử dụng webHttpBindingWebHttpBehavior).

Nếu bạn đang sử dụng điểm cuối "web" (WebHttpBinding/WebHttpBehavior), bạn có thể sử dụng WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Referer]. Nếu bạn không có tham chiếu đến System.ServiceModel.Web.dll, bạn cũng có thể sử dụng HttpRequestMessageProperty từ OperationContext:

HttpRequestMessageProperty prop; 
prop = (HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name]; 
var referer = prop.Headers[HttpRequestHeader.Referer] 
Các vấn đề liên quan