HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


When you create your own initialization module, add a reference to _EPiServer.Framework.dll_. The following Initialization code example shows how a property is set up with a default implementation in Initialize and then the process is undone in `Uninitialize`:


  • **Allow for Initialize to be called multiple times**. If you carry out multi-step initialization in your `Initialize` method and if it is re-executed because of an error – ensure that the application handles this scenario correctly. Example:

    
  • **This `Initialize` method may generate an error after the event handler is hooked up.** The initialization system invokes the `Initialize` method again on the next request that reaches the web application and if the event hook-up is not protected with a flag, it gets added again.

  • **The initialization engine makes sure that your code executes in a single-threaded manner**. You do not need to lock regions when you deal with shared state. This guarantee is only made for `Initialize` and `Unintialize` when you execute through the initialization system. If you have custom code that makes calls directly into your initialization module, then you may need to deal with multi-threading issues.

  • **Remember that the initialization system tracks the initialization state of your module**.

  • **Do an implementation of `Uninitialize`**. Anything you do with `Initialize` you should undo with `Uninitialize` in the reverse order of `Initialize`.

  • If you are using the CMS API make sure you are adding a module dependency to CMS using `\[ModuleDependency(typeof(EPiServer.Web.InitializationModule))\]`.