You can put the code in Application_Start in Global.asax.
Or you can use the Lazy type for a static member, and it will only be initialized on the first call (and remains in memory for as long as the application is running). This has the advantage of not slowing down the launch of the application unnecessarily.
For example, this example is for compiled Regex, but can also be executed with data loading:
public static Lazy<Regex> LibraryTagsRegex = new Lazy<Regex>(() => new Regex(@"^library/tagged/(?<Tags>.+)", RegexOptions.Compiled));
source share