繁体   English   中英

网站和Web应用程序C#中的静态变量

[英]static variables in web site and web application C#

我有相同的代码,它们在2个不同的IIS服务器上的工作方式不同,其中一个设置为网站,另一个设置为Web应用程序。

我有2节课。

public class Config1{
    public static string RelativePath {get; set;}
}

public class Config2{
    public static readonly string FavIconPath = Config1.RelativePath;
}

我从Global.asax.cs中的web.config分配值

protected void Application_Start(){
    Config1.RelativePath = getWebConfigValue("Path");
}

我在如下所示的查看文件中使用它。

RelativePath : @Config1.RelativePath<p/>
FavIconPath : @Config2.FavIconPath

结果是

On web site server
RelativePath : somevalue
FavIconPath : 

On web application server
RelativePath : somevalue
FavIconPath : somevalue

网站和Web应用程序之间的实例化计时是否存在差异? 任何帮助,将不胜感激!

静态字段初始化程序(例如将初始值分配给Config2.FavIconPath的初始化程序)在首次引用类型( Config2 )时进行处理。 这通常在您的代码首次访问它时发生,但可能会更早发生。

调用Application_Start()方法后, Config1.RelativePath的值将更改,因此用于FavIconPath的实际值取决于Application_Start()方法的顺序和要加载的Config2类型。

即使我不知道幕后发生的事情,该代码也显示了为什么您不应该让代码依赖于框架的内部行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM