App_Code/Class1.cs:
using System;
/// <summary>
///Class1 的摘要说明
/// </summary>
public class Class1
{
public [i]static[/i] string URL = string.Empty;
}Default.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
[color=Red]Class1.URL = "http://www.mzwu.com/";
Response.Write(Class1.URL);[/color]
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>static变量测试-Mzwu.Com</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:HyperLink ID="HyperLink1" NavigateUrl="~/Default2.aspx" runat="server">Default2.aspx</asp:HyperLink>
</div>
</form>
</body>
</html>Default2.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
[color=Red]Response.Write(Class1.URL);[/color]
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>static变量测试-Mzwu.Com</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>先打开Default.aspx,再打开Default2.aspx,页面会显示什么?空白吗?看一下实际测试结果:

是不是很惊讶?
结论分析
在ASP.NET应用程序中,static变量在站点运行周期内都是有效的,所以它的行为和Application极为相似,而不是Session。因此,不论static变量是在App_Code中,还是在aspx页面和类库中,都会发生上边的现象。所以,在ASP.NET应用程序中应谨慎使用static变量,除非你明确它的用途及其可能发生的后果!
评论(0)
暂无评论。