В ASP.NET MVC редко используются статические конструкторы для контроллеров.Я не знаю, чего именно вы пытаетесь достичь, но global.asax Application_Start
кажется лучшим местом для инициализации приложений.И что вы подразумеваете под единым хранилищем, доступным для контроллера?Разве вы не можете использовать объект HttpContext.Cache
или HttpContext.Application
, который используется для хранения вещей всего приложения (в отличие от сеанса)?У них также есть то преимущество, что они безопасны для потоков, поэтому вам не нужно синхронизировать доступ к этим хранилищам.
Что касается конструктора статического контроллера, его следует вызывать перед конструктором по умолчанию и только один разза приложение, и это гарантируется CLR.Для этого он должен иметь точно следующую подпись (частный, без возвращаемого типа, то же имя, что и у содержащего типа):
public class HomeController: Controller
{
// This is the exact signature of a static constructor
static HomeController()
{
}
}