c# - 在运行时选择性地禁用 ServiceStack 中的某些 REST 服务

标签 c# rest configuration servicestack

我想以编程方式禁用某些服务。用户可以通过配置文件指定是否要启用某些功能,如果不启用,则不应公开/创建服务。我知道在创建 AppHost 之前要禁用哪些服务。

现在,我可以使用 RequestFilter 来检查每次服务运行时是否已激活,如果没有激活,则抛出异常。恕我直言,这是一个不优雅的解决方案,Swagger Api 文档仍将包含那些应禁用的服务。

知道如何以优雅的方式做到这一点吗?

最佳答案

您可以将服务捆绑到 IPlugin 中,但您必须手动设置路由。这就是 /metadata 之类的东西的工作原理。

public class MyOptionalServicesPlugin : IPlugin
{
    public void Register(IAppHost appHost)
    {
         var settings = new AppSettings();
         var enableSpecialService1 = settings.Get<bool>("enableSpecialService1", false);
         if (enableSpecialService1)
         {
             appHost.RegisterService(typeof(SpecialService1), new[] { "/special/service-1" });
         }

         ...
    }
 }

然后在您的AppHost中:

public void Register(Funq.Container container)
{
    Plugins.Add(new MyOptionsServicesPlugin());
    ...
}

关于c# - 在运行时选择性地禁用 ServiceStack 中的某些 REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16481316/

相关文章:

c# - 如何在 asp.net mvc 中向现有类或对象添加新类型

c# - Internet Explorer 不会在测试期间启动新窗口

c# - XNA 音乐实时混音

xml - 有没有办法使用浏览器手动发布到休息网络服务

java - Struts 2 中的 "No configuration found for the specified action"

android - 字体更改时处理运行时 Activity 配置

c# - 确定窗口是否在最顶层

mysql - Node.js 安全

django - 使用 Redis 作为 REST API 的中间缓存

java - 无法加载 .pem 私钥