2010-11-18 85 views
0

我试图创建一个站点,与主控制器。它有两个构造函数 - 静态和无参数。通过规范,静态的应该被调用第一次,初始化类的静态成员,但它从来没有这样做,为什么呢?我应该如何为控制器可访问的某些员工实施单一存储?Asp.Net Mvc控制器静态构造函数

编辑: 我想我犯了一些错误,当我尝试调试它,因为今天它像预期的那样工作,静态构造函数被调用一次,并在常规之前。

回答

1

在ASP.NET MVC中对控制器使用静态构造函数并不常见。我不知道你到底想要达到什么目的,但是global.asax Application_Start看起来是一个更好的地方来执行应用程序初始化。此外,控制器可访问单个存储器的含义是什么?难道你不能使用HttpContext.CacheHttpContext.Application对象来存储应用程序的广泛事物(与会话相反)吗?它们还具有线程安全的优点,因此不需要将访问权限同步到这些存储区。

就静态控制器构造函数而言,它应该在默认构造函数之前调用,并且每个应用程序只调用一次,并由CLR保证。为此,它需要有完全以下签名(私有,没有返回类型,相同的名称包含类型):

public class HomeController: Controller 
{ 
    // This is the exact signature of a static constructor 
    static HomeController() 
    { 

    } 
} 
+0

1.我想有其中一次初始化一些信息结构(类似于常量,但不完全是)。不希望每次都要初始化这些结构。由于我只会读取操作,所以我不需要同步。我知道我可以使用缓存和应用程序,但这样我就可以看到我的所有控制器到这些结构,并且不想,因为我只用它们中的一个。我并不是说我的方式是正确的,所以如果有人能为我的情况提供更好的解决方案,请做。 – devfreak 2010-11-19 08:51:52

+0

2.我的静态构造函数签名和你写的一样。我试图调试它,并在静态和正常的构造函数中放置2个断点。正常的构造函数在静态之前调用。任何想法为什么? – devfreak 2010-11-19 08:55:36