Вот как я закончил кодировать это. На высоком уровне, в основном, я добавил папку Controllers, создал класс AuthenticationServiceInfoController с одним методом действия GET, а затем зарегистрировал этот контроллер во время запуска. Как отмечено в комментарии выше, мое решение имело некоторую дополнительную сложность, потому что мой AuthenticationServiceInfoController унаследован от базового ServiceInfoController, определенного в другом месте, но я попытался исключить это из этого примера. Итак, код контроллера выглядит так:
[RoutePrefix("api/v1/serviceinfo")]
public class AuthencticationServiceInfoController : IServiceInfoController
{
[Route("")]
[Route("~/api/serviceinfo")]
public IHttpActionResult Get()
{
try
{
ServiceInformation serviceInfo = new ServiceInformation();
serviceInfo.ServiceVersion = Global.serviceVersion;
return Ok(serviceInfo);
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}
}
Он реализует простой интерфейс:
public interface IServiceInfoController
{
IHttpActionResult Get();
}
И в моем методе Startup.Configuration, где я настраиваю Identity Server, я получил:
var idSrvFactory = new IdentityServerServiceFactory();
idSrvFactory.Register(new Registration<IServiceInfoController, Controllers.AuthencticationServiceInfoController>());
Я думаю, это все, что нужно. Он установлен и работает в моей службе на базе Identity Server 3.