【问题标题】:Selectively disable certain REST Services in ServiceStack during runtime在运行时选择性地禁用 ServiceStack 中的某些 REST 服务
【发布时间】:2013-05-10 11:34:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# rest configuration servicestack


    【解决方案1】:

    您可以将服务捆绑到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());
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 2012-08-28
      • 2016-03-29
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多