ASP.NET WebPages中的AppStart与静态构造函数

时间:2013-07-24 02:48:06

标签: asp.net asp.net-webpages

我的App_Code文件夹中有一个静态类:

public static class SiteData
{
    public static string AdminEmail{ get; set; }
}

该类可以具有静态成员,这些成员将在用户之间共享。在此示例中,我使用了AdminEmail

我知道两种初始化AdminEmail的方法:

解决方案1 ​​

创建一个_AppStart.cshtml(C#)

@{
    SiteData.AdminEmail = "admin@mydomain.com";
}    

解决方案2

SiteData class

中创建一个静态构造函数
public static class SiteData
{
    public static string AdminEmail{ get; set; }
    static SiteData()
    {
        AdminEmail = "admin@mydomain.com";
    }
}

两个解决方案在应用程序启动时初始化AdminEmail。以下是我的问题:

1)在这种情况下哪种解决方案更合适?

2)两种解决方案的优缺点?

3)ASP.NET中的AppStart有什么用? IF 静态类可以完成它的任务吗?

2 个答案:

答案 0 :(得分:1)

据我所知,AppStart.cshtml似乎与webapp的其余部分更加集成。 http://www.asp.net/web-pages/tutorials/working-with-pages/18-customizing-site-wide-behavior 普通的静态构造函数对Web环境的了解要少得多

答案 1 :(得分:1)

可以使用Web Pages框架中的AppState类定义应用程序级别(全局)变量。这是一个类似于Session的简单字典。您也可以通过动态别名引用它:App例如

App.AdminEmail = "admin@mydomain.com";

相同
AppState["AdminEmail"] = "admin@mydomain.com";

你可以混合使用这两种方法。

使用它们的主要缺点是它们不是强类型的。在一个主要依赖于dynamic类型的框架中,这对您来说可能不是问题。

主要优点是AppState(或App)非常易于使用,并且不需要任何额外的管道来使其工作。

Web页面框架旨在降低开发人员的复杂性。 AppStart只是global.asax中的Application_Start事件处理程序的简化视图。