在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时才有效。