2013-05-10 34 views
2

我想以編程方式禁用某些服務。用戶可以通過配置文件指定是否啓用某些功能,如果不啓用,則不應該暴露/創建服務。在創建AppHost之前,我知道要禁用哪些服務。運行期間在ServiceStack中選擇性地禁用某些REST服務

現在,我可以使用RequestFilter來檢查每次服務運行,如果它被激活,如果沒有,則拋出一個異常。這是恕我直言的一個不合理的解決方案,Swagger Api文檔將仍然包含那些應該被禁用的服務。

任何想法如何做到這一點的優雅方式?

回答

3

您可以將服務綁定到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()); 
    ... 
} 
相關問題