在WCF REST服务中获取原始请求URL

我要在我的WCF rest webservice中检索原始请求URL。 现在我的代码看起来像这样:

public class MyServiceAuthorizationManager : ServiceAuthorizationManager { protected override bool CheckAccessCore(OperationContext operationContext) { base.CheckAccessCore(operationContext); var url = operationContext.IncomingMessageProperties.Via.OriginalString; ... 

web.config中

         

如果我的原始url是

http://192.168.1.100:8081/test

这段代码返回

HTTP://主机名:8081 /测试

有没有办法检索确切的原始请求url?

注意

我在web.config中找到了关于cutomize“baseAddress”标签的post,但是我的扩展名webservice没有特定的端点,我不想添加它。 我不知道是否有办法在没有端点的情况下做到这一点。

我发现这篇文章https://stackoverflow.com/a/5915713/735864与System.Net.HttpRequestHeader.Host一起播放,但是端口号不起作用! 我知道我可以解析提供的URL并进行替换但是……我不认为这是实现此目的的最佳实践。

 System.ServiceModel.Web.WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.OriginalString; 

这给出了原始URI。

简答: var url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;

答案很长:请参阅如何在C#中获取当前页面的URL 。

警告:这仅在您在web.config文件中启用aspNetCompatibilityEnabled时才有效。