Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行时选择性地禁用ServiceStack中的某些REST服务_C#_Rest_Configuration_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Rest,Configuration,servicestack" /> servicestack,C#,Rest,Configuration,servicestack" />

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

C# 在运行时选择性地禁用ServiceStack中的某些REST服务,c#,rest,configuration,servicestack,C#,Rest,Configuration,servicestack,我想以编程方式禁用某些服务。用户可以通过配置文件指定是否要启用部分功能,如果不启用,则不应公开/创建服务。我知道在创建AppHost之前要禁用哪些服务 现在,我可以使用RequestFilter在每次运行服务时检查它是否被激活,如果没有,则抛出异常。这是一个不合法的解决方案,而Swagger Api文档仍将包含那些应该禁用的服务 您知道如何以优雅的方式实现这一点吗?您可以将服务捆绑到IPlugin中,但您必须手动设置路由。这就是/metadata之类的工作方式 public class MyOp

我想以编程方式禁用某些服务。用户可以通过配置文件指定是否要启用部分功能,如果不启用,则不应公开/创建服务。我知道在创建
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" });
         }

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