Получить исходный URL запроса в службе WCF REST

Мне нужно восстановить исходный URL-адрес запроса в моем веб-сервисе WCF. Теперь мой код выглядит следующим образом:

public class MyServiceAuthorizationManager : ServiceAuthorizationManager
{
    protected override bool CheckAccessCore(OperationContext operationContext)
    {
        base.CheckAccessCore(operationContext);

        var url = operationContext.IncomingMessageProperties.Via.OriginalString;
        ...

web.config

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
      <standardEndpoints> 
         <webHttpEndpoint>
             <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>

если мой оригинальный URL

http://192.168.1.100:8081/test

этот код возвращает

http://hostname:8081/test

Есть ли способ получить точный исходный URL-адрес запроса?

Примечание

Я нашел сообщения, которые говорят о cutomize теге baseAddress в web.config, но у меня нет конкретной конечной точки fum моего расширения webservice, и я не хочу ее добавлять. Я не знаю, есть ли способ сделать это без конечной точки.

Я нашел этот пост qaru.site/questions/401168/... играет с System.Net.HttpRequestHeader.Host, но с номером порта он не работает! Я знаю, что могу разобрать предоставленный url и сделать Replace, но... Я не думаю, что это лучшая практика для достижения этого.

+13
02 февр. '12 в 10:06
источник поделиться
2 ответа
System.ServiceModel.Web.WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.OriginalString;

Это дает исходный URI.

+27
18 сент. '12 в 9:16
источник

Короткий ответ: var url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;

Длинный ответ: см. Как получить URL-адрес текущей страницы на С#.

+3
30 апр. '12 в 15:18
источник

Посмотрите другие вопросы по меткам или Задайте вопрос