不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
ASP.NET应用程序应谨慎使用static变量
编辑:dnawo 日期:2011-01-02
先来看一个例子:
App_Code/Class1.cs:
Default.aspx:
Default2.aspx:
先打开Default.aspx,再打开Default2.aspx,页面会显示什么?空白吗?看一下实际测试结果:

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

using System;
/// <summary>
///Class1 的摘要说明
/// </summary>
public class Class1
{
public static string URL = string.Empty;
}
/// <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>
<!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>
<!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 | 引用: 0 | 查看次数: 4463
发表评论
请登录后再发表评论!