我可以向基于 Identity Server 3 的服务添加服务信息/健康检查端点吗?
Can I add a service info / health check endpoint to my Identity Server 3-based service?
我有一组基于 AspNet WebApi 的 Web 服务和一个基于 IdentityServer3 的身份验证服务。所有 Web 服务都支持我们用于监控和诊断的简单服务信息端点。它报告服务版本和服务器名称。当前唯一不支持服务信息端点的服务是基于 IdentityServer3 的身份验证服务。
有没有办法向基于 IdentityServer3 的服务添加一个简单的端点?在 GitHub issue 812 Brock Allen 中说 "We have a way to add custom controllers, but it's undocumented, current unsupported, and not really done." 我宁愿不走那条有据可查、不受支持的路线。
有没有办法 modify/extend 发现端点包含更多信息?
以下是我最终编写代码的方式。在高层次上,我基本上添加了一个 Controllers 文件夹,使用单个 GET 操作方法创建了一个 AuthenticationServiceInfoController class,然后在启动期间注册了该控制器。如上面的评论所述,我的解决方案有一些额外的复杂性,因为我的 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();
}
在我配置 Identity Server 的 Startup.Configuration 方法中,我得到了:
var idSrvFactory = new IdentityServerServiceFactory();
idSrvFactory.Register(new Registration<IServiceInfoController, Controllers.AuthencticationServiceInfoController>());
我想这就是全部。它已就位并在我的基于 Identity Server 3 的服务中工作。
我有一组基于 AspNet WebApi 的 Web 服务和一个基于 IdentityServer3 的身份验证服务。所有 Web 服务都支持我们用于监控和诊断的简单服务信息端点。它报告服务版本和服务器名称。当前唯一不支持服务信息端点的服务是基于 IdentityServer3 的身份验证服务。
有没有办法向基于 IdentityServer3 的服务添加一个简单的端点?在 GitHub issue 812 Brock Allen 中说 "We have a way to add custom controllers, but it's undocumented, current unsupported, and not really done." 我宁愿不走那条有据可查、不受支持的路线。
有没有办法 modify/extend 发现端点包含更多信息?
以下是我最终编写代码的方式。在高层次上,我基本上添加了一个 Controllers 文件夹,使用单个 GET 操作方法创建了一个 AuthenticationServiceInfoController class,然后在启动期间注册了该控制器。如上面的评论所述,我的解决方案有一些额外的复杂性,因为我的 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();
}
在我配置 Identity Server 的 Startup.Configuration 方法中,我得到了:
var idSrvFactory = new IdentityServerServiceFactory();
idSrvFactory.Register(new Registration<IServiceInfoController, Controllers.AuthencticationServiceInfoController>());
我想这就是全部。它已就位并在我的基于 Identity Server 3 的服务中工作。