您的位置:首页 > 产品设计 > UI/UE

在做了 BasePage 时: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 / / 节中包括

2013-12-07 13:35 946 查看
摘自: http://lichengguizy.blog.163.com/blog/static/11771858620122342749552/

只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。

2012-03-03 16:39:31| 分类: .net|字号 订阅

今天碰到一个错误,错误描述如下:

只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。

网上找了不少资料,方法不少,但是没有解决。
后来在csdn中看到一个帖子,在其中找到解决方案。

this.Load+=new EventHandler(Basepage_Load);

因为我新建了一个类,我想把这个类作为父类,让其他的类来继承它。
如果说继承了此类,那么想自动调用父类的方法,那么只能在类的构造方法中调用需要自动执行的方法。

不过我没看懂为什么要用到委托来实现。(用了委托没报错,直接写入方法名报错。)

我的代码如下:
public class myLogin:System.Web.UI.Page
{
public myLogin()
{
this.Load += new EventHandler(IsLogin);
}

public void IsLogin(Object sender, EventArgs e)
{
if (Session["LoginState"] == null)
{
Response.Redirect("~/LoginAdmin/Gonze.aspx");
}
}
}

摘自: http://blog.csdn.net/jjhua/article/details/2908202

发布后运行错误提示:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration> / <system.web> / <httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。

解决:在web.config里添加<sessionState mode="InProc"></sessionState>(本地机上好用,未多机调试)

具体解释:

<sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"/>

必选属性
属性 选项 说明
mode 指定在哪里存储会话状态。
Off 指示会话状态未启用。
InProc 指示在本地存储会话状态。
StateServer 指示在远程计算机上存储会话状态。
SQLServer 指示在 SQL Server 上存储会话状态。

可选属性
属性 选项 说明
cookieless 指定不具有 Cookie 的会话是否应用于标识客户端会话。
true 指示应使用不具有 Cookie 的会话。
false 指示不应使用没有 Cookie 的会话。默认值为 false。
timeout 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为 20。
stateConnectionString 指定远程存储会话状态的服务器名称和端口。例如“tcpip=127.0.0.1:42424”。当 mode 为 StateServer 时该属性是必需的。
sqlConnectionString 为 SQL Server 指定连接字符串。例如“data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind”。当 mode 为 SQLServer 时该属性是必需的。
stateNetworkTimeout 在使用 StateServer 模式存储会话状态时,指定在放弃会话之前 Web 服务器和状态服务器之间的 TCP/IP 网络连接空闲的时间(以秒为单位)。默认值为 10。

备注
使用 StateServer 模式

确保 ASP.NET 状态服务正在将用于存储会话状态信息的远程服务器上运行。该服务与 ASP.NET 一起安装,其默认位置为 <驱动器>:/systemroot/Microsoft.NET/Framework/version /aspnet_state.exe。
在应用程序的 Web.config 文件中,设置 mode=StateServer 并设置 stateConnectionString 属性。例如,stateConnectionString="tcpip=sarath:42424"。
使用 SQLServer 模式

在运行 SQL Server 的计算机(它将存储会话状态)上运行 InstallSqlState.sql(默认的安装位置为 <驱动器>:/systemroot/Microsoft.NET/Framework/version)。这将创建一个名为 ASPState 的数据库,该数据库具有新的存储过程并且在 TempDB 数据库中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
在应用程序的 Web.config 文件中,设置 mode=SQLServer 并设置 sqlConnectionString 属性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐