Подтвердить что ты не робот

Получить исходный 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/info/401168/... играет с System.Net.HttpRequestHeader.Host, но с номером порта он не работает! Я знаю, что могу разобрать предоставленный url и сделать Replace, но... Я не думаю, что это лучшая практика для достижения этого.

4b9b3361

Ответ 1

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

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