Get original request url in WCF REST service
我必须在wcf rest webservice中检索原始请求URL。现在我的代码如下:
1 2 3 4 5 6 7 8 | public class MyServiceAuthorizationManager : ServiceAuthorizationManager { protected override bool CheckAccessCore(OperationContext operationContext) { base.CheckAccessCore(operationContext); var url = operationContext.IncomingMessageProperties.Via.OriginalString; ... |
Web.CONFIG
1 2 3 4 5 6 7 8 | <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <standardEndpoints> <webHttpEndpoint> <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/> </webHttpEndpoint> </standardEndpoints> </system.serviceModel> |
如果我的原始URL是
http://192.168.1.100:8081/测试
此代码返回
http://hostname:8081/测试
是否有方法检索准确的原始请求URL?
注释
我在web.config中发现了一些文章谈论的是剪切"baseaddress"标记,但是我的扩展webservice没有特定的端点,我不想添加它。我不知道是否有一种方法可以做到没有终点。
我找到了这个帖子https://stackoverflow.com/a/5915713/735864与system.net.httprequestader.host一起使用,但端口号不起作用!我知道我可以解析提供的URL并进行替换,但是…我不认为这是实现这一目标的最佳实践。
1 | System.ServiceModel.Web.WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.OriginalString; |
这将提供原始的URI。
简短回答:
长答案:请参阅如何在C中获取当前页面的URL。
警告:仅当在web.config文件中启用aspnetcompatibilityEnabled时,此操作才有效。