我已经四处寻找有关此问题的提示,但是我看到的所有内容都是针对Web应用程序的,但我正在制作一个常规的ASP.NET Web表单网站。请随身携带,我是.Net新手。会话变量在会话过期前丢失
用户登录后,我设置了一个Session变量来存储他们的ID。此ID用于加载诸如其用户名的内容。该名称将首先正确显示,显示Session变量已被使用。但是,如果我在几分钟后刷新页面,则用户名称为空,表示Session变量现在消失。
我读过默认会话超时是20分钟。我在我的托管服务提供商的Asp.net设置中证实了这一点。但是这个变量在20分钟之前就已经丢失了。
我也看了,我应该有一个Global.asax文件与下面的代码:
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 20;
}
我这样做,但几分钟后,我仍然失去了变数。然后我读,我应该把下面的代码在我的web.config:
<configuration>
<system.web>
<sessionState mode="InProc" timeout="120" />
</system.web>
</configuration>
所以我这样做,但随后产生的错误说:“分析器错误信息:这是使用注册的节是错误的as allowDefinition ='MachineToApplication'超出了应用程序级别。此错误可能是由于虚拟目录没有被配置为IIS中的应用程序。“
我不知道还有什么可以尝试的。我创建的网站位于我的域的子目录中,我编辑的web.config和global.asax文件位于该子目录中,所以我不认为其他地方存在冲突吗?
我一直坚持这一段时间,任何帮助非常感谢。
谢谢马克,我会试试。由于我刚接触.Net,因此我不认为必须将子目录设置为IIS中的应用程序,因为它是一个Web表单网站而不是应用程序。我会给这个镜头 – Cineno28 2014-11-08 13:31:28
IIS中的应用程序更像是一个操作区或一个独立的实体。这意味着它内部的任何东西都可以在它自己的内存空间中运行您必须小心,因为任何应用程序通常都会默认继承根应用程序的属性,但您可以在自己的应用程序范围内重载它们。 – 2014-11-08 15:54:48
很高兴知道,谢谢!这可能听起来像一个愚蠢的问题,但我对.net开发很陌生。我已经分配到的网站使用Windows托管,并在根目录下有一个php站点。他们现在在一个子目录中有一个asp.net站点,并要求我在另一个子目录中创建这个额外的.net站点。是在根源的PHP网站会导致冲突?我不知道他们为什么这样设置它。我将按照你的指示将这个目录设置为一个应用程序,但是我想问问这是否可能导致另一个问题 – Cineno28 2014-11-08 16:26:18