Переопределить хост ссылок на одапа вебапи

Я использую WebAPI 2.2 и Microsoft.AspNet.OData 5.7.0 для создания службы OData, которая поддерживает подкачку страниц.

При размещении в производственной среде WebAPI живет на сервере, который не предоставляется извне, поэтому различные ответы, возвращаемые в ответе OData, такие как@odata.context&nbsp;а также@odata.nextLink&nbsp;указать внутренний IP-адрес, напримерhttp://192.168.X.X/<AccountName>/api/...&nbsp;и т.п.

Я был в состоянии изменитьRequest.ODataProperties().NextLink&nbsp;реализуя некоторую логику в каждом методе ODataController, чтобы заменить внутренний URL-адрес внешним URL-адресом, напримерhttps://account-name.domain.com/api/..., но это очень неудобно, и это только исправляет NextLinks.

Есть ли способ установить имя внешнего хоста во время настройки службы OData? Я видел собственностьRequest.ODataProperties().Path&nbsp;и задаюсь вопросом, возможно ли установить базовый путь наconfig.MapODataServiceRoute("odata", "odata", GetModel());&nbsp;позвонить или вGetModel()&nbsp;реализация с использованием, например,ODataConventionModelBuilder?

ОБНОВИТЬ:&nbsp;Лучшее решение, которое я придумала, это создатьBaseODataController&nbsp;который отменяетInitialize&nbsp;метод и проверяет, является лиRequest.RequestUri.Host.StartsWith("beginning-of-known-internal-IP-address")&nbsp;а затем сделать RequestUri переписать так:

var externalAddress = ConfigClient.Get().ExternalAddress;  // e.g. https://account-name.domain.com
var account = ConfigClient.Get().Id;  // e.g. AccountName
var uriToReplace = new Uri(new Uri("http://" + Request.RequestUri.Host), account);
string originalUri = Request.RequestUri.AbsoluteUri;
Request.RequestUri = new Uri(Request.RequestUri.AbsoluteUri.Replace(uriToReplace.AbsoluteUri, externalAddress));
string newUri = Request.RequestUri.AbsoluteUri;
this.GetLogger().Info($"Request URI was rewritten from {originalUri} to {newUri}");

Это прекрасно исправляет@odata.nextLink&nbsp;URL для всех контроллеров, но по какой-то причине@odata.context&nbsp;URL все еще получаютAccountName&nbsp;часть (например,https://account-name.domain.com/AccountName/api/odata/$ metadata # ControllerName), поэтому они все еще не работают.