Cross cutting concerns in EPiServer using Dynamic Proxies

Cross cutting concerns should be handled in an unobtrusive way, i.e. implemented in a way they don’t require any modifications to your original features. One way to achieve this is by using Aspect Oriented Programming, more specifically using Castle Dynamic Proxies to intercept method calls at runtime with StructureMap. The code examples below were implemented in an EPiServer Alloy MVC site. In this example we’re going to add MiniProfiler and measure how long each method takes to run.

Debug EPiServer Search (lucene)

A quick note to self: To debug EPiServer Search indexing, the below should be added to EPiServerlog.config:   <!--EPiServer.Search.IndexingService.IndexingService--> <logger name="IndexingService"> <level value="All" /> </logger> <logger name="EPiServer.Search"> <level value="All" /> </logger> <!-- Reduce amount of debug logging --> <logger name="EPiServer.Core.ContentProvider" additivity="false"> <level value="Debug" /> </logger> <logger name="EPiServer.Data.Dynamic.Providers.DbDataStoreProvider" additivity="false"> <level value="Error" /> </logger> <logger name="EPiServer.Data.Providers.SqlDatabaseHandler" additivity="false"> <level value="Error" /> </logger> <logger name="EPiServer.Data.Providers.ConnectionContext" additivity="false"> <level value="Error" /> </logger>