/// <summary> /// Initializes any default plugin if no other plugin is registered to same interface /// <para /> /// Also used for changing the default security settings /// <para /> /// Should be called after you have registered all your non-default plugins /// </summary> public void InitializeDefaultPlugins(bool renderCaching = true, bool securityOn = false, SimpleHttpSecuritySettings securitySettings = null) { if (_defPluginsReady) { return; } if (!_rPluginCollection.IsRegistered <IJsonConverter>()) { RegisterPlugin <IJsonConverter, ServiceStackJsonConverter>(new ServiceStackJsonConverter()); } if (!_rPluginCollection.IsRegistered <IXmlConverter>()) { RegisterPlugin <IXmlConverter, ServiceStackXmlConverter>(new ServiceStackXmlConverter()); } if (!_rPluginCollection.IsRegistered <IHttpSecurityHandler>()) { RegisterPlugin <IHttpSecurityHandler, SimpleServerProtection>(new SimpleServerProtection()); } if (!_rPluginCollection.IsRegistered <IBodyParser>()) { RegisterPlugin <IBodyParser, SimpleBodyParser>(new SimpleBodyParser()); } if (!_rPluginCollection.IsRegistered <IFileCacheManager>()) { RegisterPlugin <IFileCacheManager, SimpleFileCacheManager>(new SimpleFileCacheManager()); } if (!_rPluginCollection.IsRegistered <IPageRenderer>()) { RegisterPlugin <IPageRenderer, EcsPageRenderer>(new EcsPageRenderer()); } _defPluginsReady = true; if (securitySettings == null) { securitySettings = new SimpleHttpSecuritySettings(); } SecMan = _rPluginCollection.Use <IHttpSecurityHandler>(); SecMan.Settings = securitySettings; _rPluginCollection.Use <IPageRenderer>().CachePages = renderCaching; _cacheMan = _rPluginCollection.Use <IFileCacheManager>(); if (CachePublicFiles && _publicFiles) { _resHandler = new CachePublicFileRequestHander(PublicDir, _cacheMan); } else if (_publicFiles) { _resHandler = new PublicFileRequestHander(PublicDir); } else { _resHandler = new ActionOnlyResponseHandler(); } SecurityOn = securityOn; }