2013-04-06 7 views
5

Tak prosto, ale nie mogę znaleźć żadnych informacji lub przykładów wyjaśniających exacty, gdzie to powinno się stać. Zgaduję w tym momencie, że powinno to być w metodzie Configure.Gdzie powinny być dodane wtyczki w ServiceStack

Dziękuję Stephen

Globalny

public class AppHost : AppHostBase 
{ 
    public AppHost() : base("Web Services", typeof(ContactsService).Assembly) { } 

    public override void Configure(Container container) 
    { 
     //Set JSON web services to return idiomatic JSON camelCase properties 
     ServiceStack.Text.JsConfig.EmitCamelCaseNames = true; 

     //Show StackTrace in Web Service Exceptions 
     SetConfig(new EndpointHostConfig { DebugMode = true }); 


     //Register any dependencies you want injected into your services 
     container.Register<ICacheClient>(new MemoryCacheClient()); 

/*   // Redis 
     container.Register<IRedisClientsManager>(c => new PooledRedisClientManager()); 
     container.Register<IRepository>(c => new Repository(c.Resolve<IRedisClientsManager>()));*/ 


     container.Register<IRepository>(new Repository()); 
     container.Register<IBusinessService>(new BusinessService()); 

     //Configure Custom User Defined REST Paths for your services 
     /*ConfigureServiceRoutes();*/ 

     //Add a request filter to check if the user has a session initialized 
     /*this.RequestFilters.Add((httpReq, httpResp, requestDto) => 
     { 
      var sessionId = httpReq.GetCookieValue("user-session"); 
      if (sessionId == null) 
      { 
       httpResp.ReturnAuthRequired(); 
      } 
     });*/ 


     RequestFilters.Add((httpReq, httpResp, requestDto) => new LogRequestAttribute().Execute(httpReq, httpResp, requestDto)); 

     Plugins.Add(new SwaggerFeature()); 
    } 

    public static void Start() 
    { 
     new AppHost().Init(); 
    } 
} 

Updated

public AppHost() : base("Web Services", typeof(ContactsService).Assembly) { } 

public override void Configure(Container container) 
{ 
    .... 

    ConfigurePlugins(); 
} 

private void ConfigurePlugins() 
{ 
    Plugins.Add(new ProtoBufFormat()); 
    Plugins.Add(new RequestLogsFeature()); 
    Plugins.Add(new SwaggerFeature()); 
} 

private void ConfigureServiceRoutes() 
{ 

} 

public static void Start() 
{ 
    new AppHost().Init(); 
} 

Odpowiedz

4

Nie ma informacji, ponieważ Plugins w ServiceStack można dodawać nigdzie w swojej metodzie AppHost.Configure(). Dotyczy to wszystkich konfiguracji ServiceStack i rejestracji zależnościami, usług, filtrów itp

To nie ma znaczenia, gdzie w sposobie AppHost.Configure() one dodane, bo są tylko przygotowanej przez ServiceStack po jej nazywa.

Są one jednak zainicjowane (tj. Nazywa się IPlugin.Register()) w takiej samej kolejności, w jakiej zostały dodane.

+0

OK, właśnie dodałem je wszystkie do metody ConfigurePlugins .. z braku lepszej nazwy. –