我有一个使用基本 HTTP 绑定(无 SSL)的自托管 WCF 应用程序,在 .NET Framework 4.0 上的控制台应用程序中运行。
我在一个方法上有一个 WebGet 属性,它返回一个人类可读的字符串作为“烟雾测试”。
如果我有一个 ASP.NET 网络表单页面,我会使用 Request.UrlReferrer 或 ServerVariables("HTTP_REFERER") 来查看客户端是否自愿提供他们的重定向信息。
我怎么能用 WCF 做到这一点?
谢谢。
如果您使用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]