【问题标题】:AppStart vs static constructor in ASP.NET WebPagesASP.NET WebPages 中的 AppStart 与静态构造函数
【发布时间】:2013-07-25 17:32:41
【问题描述】:

我的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 有什么用如果一个静态类可以完成它的任务?

【问题讨论】:

    标签: asp.net asp.net-webpages


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      可以使用网页框架中的AppState 类定义应用程序级别(全局)变量。这是一个类似于 Session 的简单字典。你也可以通过它的动态别名来引用它:App e.g.

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-19
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2011-05-06
        • 2020-05-05
        • 2023-03-29
        • 1970-01-01
        • 2018-06-15
        相关资源
        最近更新 更多