asp.net的session失效问题

亮声lz 2007-03-16 11:00:11
a页面用session["aa"] = "aaa";
b页面用label.text = (string)session["aa"];
居然没有保存上 ,b页面无法显示

我在另外一个解决方案里测试是可以的
这个解决方案里不行
我把web.config与能保存session的解决方案的web.config比较了,设置成完全一样的,仍然不行

我该到哪里找原因呢?
...全文
516 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
awuzi 2007-03-16
  • 打赏
  • 举报
回复
我大胆地设想一下,你一个浏览器打开a.aspx页面,另一个浏览器打开b.aspx页面,这样肯定不行的。
如果是从a链接到b,还是null,那就看看IIS的设置,“网站”属性-〉允许Session
Cnaspnet 2007-03-16
  • 打赏
  • 举报
回复
如果是两个,就是SESSION没保存了呗~
Cnaspnet 2007-03-16
  • 打赏
  • 举报
回复
什么为什么不可以用,本来就是可以用的,而且是对的
你没看清楚吗?条件你的是session=null
那么空值执行
Session["aa"] = DateTime.Now.ToString();
Response.Write("<br/>");
Response.Write((string)Session["aa"]);
这一句已经把一个叫AA的SESSION保存进来了。那么当你刷新页面的时候,SESSION就不是空了
这样页面显示应该是什么都没有,因为SESSION不等于空,所不会执行IF语句里的东西
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
现在的问题是,在我的这个解决方案的环境里,为什么Session不可用?
看下面最简单的代码:

<%@ Page Language="C#" %>
<html>
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<% Response.Write(System.DateTime.Now.ToString());
Response.Write("<br/>");
if (Session["aa"] == null)
{
Session["aa"] = DateTime.Now.ToString();
Response.Write("<br/>");
Response.Write((string)Session["aa"]);
}
%>
</form>
</body>
</html>


应该是第一次运作显示两个时间,刷新一下只显示一个了
而在我的这个解决方案方里,每次刷新都显示两个
在另一个解决方案里测试,刷新后就显示一个
Cnaspnet 2007-03-16
  • 打赏
  • 举报
回复
其实你写的SESSION已经是保存下来的
只不过你看你的条件

if (Session["aa"] == null)

SESSION是空的时候执行
Session["aa"] = DateTime.Now.ToString();
Response.Write(DateTime.Now.ToString());
Response.Write("<br/>");
Response.Write((string)Session["aa"]);

那么不是空的时候不就不执行了..你这样写。页面什么都没显示才是正确的
Cnaspnet 2007-03-16
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{

if (Session["aa"] == null)
{
Session["aa"] = DateTime.Now.ToString();
Response.Write(DateTime.Now.ToString());
Response.Write("<br/>");
Response.Write(Session["aa"].ToString());

}
else
{
Response.Write(Session["aa"].ToString());
}
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
顶一下
大家帮帮忙呀
这个问题好郁闷呀
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
测试发现,即使是在本页,session的页也不能保存下来,一刷新便失效,看下面的代码:


protected void Page_Load(object sender, EventArgs e)
{
if (Session["aa"] == null)
{
Session["aa"] = DateTime.Now.ToString();
Response.Write(DateTime.Now.ToString());
Response.Write("<br/>");
Response.Write((string)Session["aa"]);
}
}
calmzeal 2007-03-16
  • 打赏
  • 举报
回复
不是
是说代码中执行过这样的操作,如:
Session["a"]="a";
DirectoryInfo.Delete(or Move)("c:\temp")

会造成当前例程重启(好像是这样)
自然Session就丢失了

可能还有其他bug
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
to:楼上
文件夹的更名或删除指的哪些文件夹?
我使用session的文件夹没有更过名的

我试一上跟踪
calmzeal 2007-03-16
  • 打赏
  • 举报
回复
刚才是要你跟踪一下Session
看到哪个地方出的问题
a页面有问题没?
在哪里丢失的

输入法坏了。。。

如果是.net2.0
我记得半年前就有个bug是
如果进行了对文件夹的删除(或者改名)
会造成Session的丢失
gauzxj 2007-03-16
  • 打赏
  • 举报
回复
看看iis
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
to:WNASP(好好学习,天天向上)
都是使用VS的内部IIS运行的.

我直接使用IIS用localhost访问,session仍然不可能
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
web.config应该是正确的,我与另一个seesion正常的web.congif对比过的.
下面的我的web.config的全部内容
--------------------------------

<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="database" value="MSSQL"/>
<add key="WebDAL" value="CMS.SQLServerDAL"/>
<add key="Event Log Source" value="CMS"/>
</appSettings>
<connectionStrings>
<add name="MSSQL" connectionString="Uid=sa;Pwd=88888888;Initial Catalog=CMS_4;Data Source=LZ\LZ;Connect Timeout=900"/>
</connectionStrings>

<system.web>

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="Uid=sa;Pwd=ghdqlz,.-;Initial Catalog=CMS_4;Data Source=LZ\LZ" cookieless="false" timeout="20"/>

<customErrors defaultRedirect="Error.aspx" mode="RemoteOnly"/>

<pages buffer="true" enableSessionState="ReadOnly" enableViewState="false" enableViewStateMac="false" smartNavigation="false"/>

<xhtmlConformance mode="Legacy"/>
<compilation debug="true"/>

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

<authentication mode="Windows"/>


<authorization>
<allow users="*"/>

</authorization>

</system.web>

</configuration>
WNASP 2007-03-16
  • 打赏
  • 举报
回复
看看IIS的配置是否一样呢
babyrockxray 2007-03-16
  • 打赏
  • 举报
回复
看看配置是不是禁用了session
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
TO:1楼
程序不会出错的
TO:2楼

Session["aa"].ToString()这样会出错,因为Session["aa"]中无内容
用Session["aa"] == null 返回true
alreala 2007-03-16
  • 打赏
  • 举报
回复
a页面用Session["aa"] = "aaa";
b页面用label.text = Session["aa"].ToString();

试试看
calmzeal 2007-03-16
  • 打赏
  • 举报
回复
b页面无法显示?
debug yi xia
亮声lz 2007-03-16
  • 打赏
  • 举报
回复
我费好了好大的劲呀
重建了解决方案,将项目逐一导入测试
才一步步的找到原因,晕呀
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧