2

一部のサービスをプログラムで無効にしたい。ユーザーは、機能の一部を有効にする場合は構成ファイルを介して指定できます。そうでない場合は、サービスを公開/作成しないでください。を作成する前に、どのサービスを無効にする必要があるかを知っていますAppHost

これでRequestFilter、サービスが実行されるたびにサービスがアクティブ化されているかどうかを確認し、アクティブ化されていない場合は例外をスローすることができます。これは私見ですが、洗練されていないソリューションであり、Swagger Api ドキュメントには、無効にする必要があるサービスが含まれています。

これをエレガントな方法で行う方法はありますか?

4

1 に答える 1

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());
    ...
}
于 2013-05-10T14:33:49.460 に答える