AppSelfHost.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4. using ServiceStack;
  5. using ServiceStack.CacheAccess;
  6. using ServiceStack.CacheAccess.Providers;
  7. using ServiceStack.Common;
  8. using ServiceStack.Common.Web;
  9. using ServiceStack.Redis;
  10. using ServiceStack.ServiceHost;
  11. using ServiceStack.WebHost.Endpoints;
  12. using ServiceStack.WebHost.Endpoints.Formats;
  13. namespace ServiceStackBenchmark
  14. {
  15. public class AppSelfHost : AppHostHttpListenerBase
  16. {
  17. public AppSelfHost() : base("ServiceStackBenchmark", typeof(AppHost).Assembly) { }
  18. public override void Configure(Funq.Container container)
  19. {
  20. ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;
  21. // Remove some unused features that by default are included
  22. Plugins.RemoveAll(p => p is CsvFormat);
  23. Plugins.RemoveAll(p => p is MetadataFeature);
  24. // Get disable features specified in Config file (i.e. Soap, Metadata, etc.)
  25. var disabled = AppHostConfigHelper.GetDisabledFeatures();
  26. // Construct Service Endpoint Host Configuration store
  27. var config = new EndpointHostConfig
  28. {
  29. DefaultContentType = ContentType.Json,
  30. WriteErrorsToResponse = false,
  31. EnableFeatures = Feature.All.Remove(disabled),
  32. AppendUtf8CharsetOnContentTypes = new HashSet<string> { ContentType.Html },
  33. };
  34. // Apply configuration
  35. SetConfig(config);
  36. // Initialize Databases & associated Routes
  37. container.InitDatabaseRoutes(Routes);
  38. // Register Cache Clients
  39. container.Register<ICacheClient>(new MemoryCacheClient());
  40. // Register Redis Client Manager
  41. container.Register<IRedisClientsManager>(c =>
  42. new PooledRedisClientManager("localhost:6379"));
  43. }
  44. }
  45. }