0

我的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在类中创建静态构造函数

public static class SiteData
{
    public static string AdminEmail{ get; set; }
    static SiteData()
    {
        AdminEmail = "admin@mydomain.com";
    }
}

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

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

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

3)如果一个静态类可以完成它的任务,那么在 ASP.NET 中 AppStart 有什么用?

4

2 回答 2

1

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

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

是相同的

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

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

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

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

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

于 2013-07-25T09:32:41.247 回答
1

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

于 2013-07-24T02:53:19.120 回答