РЕДАКТИРОВАТЬ : Я перечитал ваш вопрос.Вы хотели знать, как это сделать в Startup.cs
.Вы можете, но с меньшим количеством откатов.Ваш единственный выбор - конфигурация или raw DNS.GetHostName()
, которые не идеальны.Вместо этого, при любом запросе к вашему сервису, лениво зарегистрируйте свой API.Это когда у вас есть context .До этого ваш сервис ничего не знает Джон Сноу.Первым запросом к вашему API, скорее всего, будут проверки работоспособности, так что с этого момента начнется ваша регистрация в консуле.
Решение, которое я использовал, - это сочетание конфигурации и заголовков в резервном сценарии.
Сначала положитесь на заголовок X-Forwarded-For .Если есть случаи, когда это не применимо или вам нужно ... вы можете вернуться к конфигурации.
Это работает для вашего варианта использования, discovery .Тем не менее, это также работает, когда вы хотите сгенерировать ссылки по любой причине (например, для гипермедиа для JSON API или вашей собственной реализации REST).
Откат может быть полезен, когда естьпроисходят изменения конфигурации, и у вас есть источник динамической конфигурации, который не требует повторного развертывания.
В мире ASP.NET Core вы можете создать класс и внедрить его в свои контроллеры и службы.Этот класс будет иметь метод, который знает, что сначала нужно попытаться выполнить конфигурацию (чтобы узнать, требуется ли переопределение), а затем заголовок X-Forwarded-For, и, если ни один из них не подходит, отступите далее к HttpContext.Request
, чтобы получить соответствующие части URI.
Что вы делаете, так это позволяете своему API быть безконтекстным и устойчивым (изменяться), давая ему некоторую контекстную информацию о том, где «он живет».