欢迎光临

木子屋

标题: ASP.NET应用程序应谨慎使用static变量

作者: dnawo

日期: 2011-01-02 01:41 PM

分类: Web编程

内容: 先来看一个例子：
App_Code/Class1.cs：
复制内容到剪贴板 程序代码using System;
/// <summary>
///Class1 的摘要说明
/// </summary>
public class Class1
{
public static 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)
{
Class1.URL = "http://www.mzwu.com/";
Response.Write(Class1.URL);
}
</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)
{
Response.Write(Class1.URL);
}
</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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.957 ms

返回

标题: ASP.NET应用程序应谨慎使用static变量

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.957 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.004 ms

返回