当前位置:首页 » 操作系统 » aspnetsession数据库

aspnetsession数据库

发布时间: 2022-05-17 09:18:37

1. 如何把session存储数据库

aspnet中,session默认以inproc模式存储,也就是保存在iis进程中,这样有个优点就是效率高,但不利于为本负载均衡扩展。可以把session信息保存在sql
server中,据说,该种方式比起inproc性能损失为10%-20%。如何实现呢,主要分两步介绍:
1、初始化sql
server中的状态数据库
asp.net
sql
server
提供注册工具aspnet_regsql.exe,用于创建供
asp.net
中的
sql
server
提供程序使用的
microsoft
sql
server
数据库。aspnet_regsql.exe位于
/%windir%/microsoft.net/framework/
/aspnet_regsql.exe
目录下。如果麻烦,可以
直接用visual
studio
tools
的命令提示工具中直接输入aspnet_regsql.exe使用。用法如下:
aspnet_regsql.exe

可以用如下的语法来添加默认session数据库aspstate
aspnet_regsql.exe
-s
localhost
-u
sa
-p
why1234?
-ssadd
-sstype
p
-s,-u/-p
必须是大写,分别表示数据库服务器,用户名和密码。
-ssadd
/
–ssremove
参数:
-ssadd表示是添加session数据库,
-ssremove表示移除session数据库.
创建自定义数据库myappstate,可以用如下的语法:
aspnet_regsql.exe
-s
localhost
-u
sa
-p
why1234?
-ssadd
-sstype
c
-d
myappstate
2、配置webconfig
在webconfig的
节下添加如下配置:

如果在初始化数据库的时候,创建了自定义数据库可以用类似于如下的的配置:

通过以上两步的设置,已经可以了。详细情况请参阅msdn。

2. asp.netC#中如何将权限写入session

在你登陆时候要访问数据库,访问时将权限值顺便一起读出来。存到session中不就行了。要是在不同表中就建立一个视图。

3. asp.net(c#)如何读取数据库中数据来验证登陆的用户和密码是否正确

代码如下:

string uname = this.txtUsername.Text; //得到登陆帐号

string pwd = this.txtPassword.Text; //得到登陆密码

SqlConnection sqlCon = new SqlConnection(); //创建数据库连接对象

//初始化该对象的连接字串

sqlCon.ConnectionString

ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;

sqlCon.Open(); //打开数据库连接

SqlCommand sqlComGet = new SqlCommand(); //创建SqlCommand对象

sqlComGet.Connection = sqlCon; //用sqlCon初始化SqlCommand对象

sqlComGet.CommandText = "select * from TUser where UserName='" + uname + "' and UserPwd='" + pwd + "'";

SqlDataReader sqlDr = sqlComGet.ExecuteReader(); //创建SqlDataReader对象

if (sqlDr.Read()) //帐号和密码正确

{ Session["UserID"] = sqlDr["UserID"];

Session["UserEmail"] = sqlDr["UserEmail"];

Session["UserName"] = uname; //用Session记录帐号

Session["UserPwd"] = pwd; //用Session记录密码

Response.Redirect("Default.aspx");

}

else //帐号或密码错误

{

this.lblResults.Text="您输入的用户名或密码不正确!";

}

sqlCon.Close();

4. asp.net session问题

;Integrated Security=SSPI 当前用户没有权限登陆 SQL.

data source=ST-SERVICE;initial catalog=OrganizationalStructure;persist security info=True;user id=sa;password=da

5. aspnet session值频繁丢失

可能导致丢失的情况,是因为应用程序池重启。如果是共享的主机,一般对CPU使用率等资源有限制,超过限制会强行回收应用程序池导致session丢失。关于这个,需要咨询主机提供商。 其次,SessionID经常变化也有可能是因为程序有错误,导致.net工作进程(w3wp.exe)频繁退出重新启动。再者,如果你并没有在Session中保存东西,那么SessionID每次访问都是不一样的,因为如果不保存东西,那么为了优化性能,ASP.net默认会自动释放Session。 Session丢失是个比较麻烦的问题,建议检查服务器的工作状态和程序设计。

6. asp.net(c#)如何读取数据库中数据来验证登陆的用户和密码是否正确

1、使用的ASP.NET(c#)代码开发语言里头的正则表达式Regex对象,它有一个IsMatch方法用于专门验证正则表达式。

7. session在服务器是怎么存储的,一般以文件形式寸还是存数据库

我们一般用的Session可以基于Cookies和Cookieless,前者是将身份标识放在Cookies里面,后者是跟在Url里作为get传递的参数..我们普遍用的前者
第1个问题,你赋值一个Session,
此时这个Session对应的值是存在服务器端,客户端无法直接获取这个值的..每个Session对象都有一个SessionID的属性,表明了该Session的唯一性,客户端会生成1个名称为AspNetSessionId(ASP.NET环境下大概是这个,你可以在FireFox的Cookies列表中查看到)的Cookies,和服务器端的SessionID对应,服务器端只有接受到这个Cookies的值才能判断该浏览者对应于哪个Session..所以你第1个问题就回答完了.
第2个问题,过了超时时间才会失效,服务器端永远不会主动去联系客户端看对方是否超时,只是创建Session对象时会有一个过期时间,超过过期时间对应的客户端还没有访问,则会清空Session对象..至于你说的不同浏览器的问题,暂时没遇到过

8. Session到底是保存在客户端还是服务器端

Session存储在服务器的内存中。

浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。它存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,数据库,memcache,Redis等。

客户端只保存sessionid到cookie中,而不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。



session机制

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识——称为session id,如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个)。

如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

以上内容参考 网络--session(计算机术语)

9. c#,asp.net,mysql,关于登录状态与数据库标识字段的设置。

可以利用session.
正常情况下,在客户端用ajax与服务器交互,确认用户在线状态.
在页面把session设置稍微短些.(默认20分钟太长了),比如5分钟.
在客户端页面用ajax每隔一分钟就确认一下在线状态.
如果超过5分钟没有确认(相差的几分钟可以防止网络不稳定),session就abort掉.
同时设置用户不在线
这样记录误差也就在5分钟.
当然如果你确定你的服务器性能好,可以更短些

10. asp.net设置session时间无效

超时不仅取决于Session.Timeout、web.config,还取决于服务器iis的设定
iis默认为7200秒.

web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer。

1、off模式

从字面上就可以看出这个是关闭模式,如果当前页面不需要session的值,为了减少服务器资源,你可以去掉Session的开销。

<sessionState mode="off">或者页面上

<%@ Page EnableSessionState="false" %>来关闭Session。

2、inProc模式(缺省模式)

它允许“无Cookie”的会话,以及在服务器之外存储
会话数据。ASP.NET会话状态模块在Web.config文件中像下面这样配置:

<sessionState mode="InProc" cookieless="false" timeout="20" />

在这个例子中,mode属性设为InProc(默认值),表明会话状态要由ASP.NET存储到内存中,而且
不用Cookie来传递会话ID。采取这种方式,不管Cookie还是隐藏表单字段都用不着了。
所以,即使网页中没有使用表单,也能加入会话。 但是这种方法,应用程序的状态将依赖于 ASP.NET进程, 当IIS进程崩溃或者正常重启时,保存在
进程中的状态将丢失。

3、StateServer会话管理mos

将mode属性设为StateServer,也就是将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行

的Windows服务来控制这个缓冲区。状态服务全称是“ASP.NET State Service ”(aspnet_state.exe),计算机管理-服务 里面即可看到此服务,启动该服务j

它由Web.config文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器,以及要监

视的端口:
<sessionState mode="StateServer"
stateConnectionString="tcpip=myserver:42424"
cookieless="false" timeout="20" />

在这个例子中,状态服务在一台名为myserver的机器的42424端口(默认端口)运行。要在服务器上改变

端口,可编辑HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state注册表项中的Port值。

显然,使用状态服务的优点在于进程隔离,并可在Web farm中共享。 使用这种模式,会话状态的存储将不

依赖于iis进程的失败或者重启,然而,一旦状态服务中止,所有会话数据都会丢失。换言之,状态服务不

像SQL Server那样能持久存储数据;它只是将数据存储在内存中。

4 用SQL Server进行会话管理

ASP.NET还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。
在这种情况下,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服

务器所需的安全凭证)指定的SQL Server中。
为了用恰当的数据库对象来配置SQL erver,管理员还需要创建ASPState数据库,
方法是运行WinDir\Microsoft.Net\Framework\Version文件夹中的InstallState.sql脚本(WinDir是服务

器的Windows文件夹,而Version是你使用的.NET框架版本的安装文件夹)。
要配置SQL服务器,可以在命令行中运行SQL Server 提供的命令行工具osql.exe

osql -S [ server name] -U [user] -P [password] <InstallSqlState.sql
例如
osql -S (local)\NetSDK -U sa -P "" -i InstallSqlState.sql

在这里用户名必须是SQL服务器上的sa帐号,或者具有同等权限的其他帐号。有兴趣的读者可以打开
这个脚本文件来了解ASP.NET是如何和SQL Server配合实现状态管理的。
卸载这些表和存储过程,可以使用UninstallSqlState.sql脚本,使用方法与上面类似。做好必要的数据库准备工作后,将web.config 文件中的sessionstate 元素的mode改为"sqlserver"
,并且指定SQL连接字符串。具体如下:

mode="sqlserver"
sqlConnectionString="data source=127.0.0.1; userid=sa; password="

配置好SQL Server后,应用程序代码运行时就和InProc模式没有什么区别。但要注意的是,由于数据不存储在本地内存,所以存储会话状态的对象需要进行序列化和反序列化,以便通过网络传给数据库服务器,以及从数据库服务器传回。这当然会影响性能。通过在数据库中存储会话状态,可分别针对扩展性及可靠性来有效地平衡性能。另外,可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server, 这样就可以为应用程序提供极大限度的可靠性。

热点内容
ig加密语音 发布:2024-10-11 12:19:25 浏览:485
钉图上传 发布:2024-10-11 12:11:27 浏览:477
脚本个 发布:2024-10-11 12:10:43 浏览:149
刚性攻丝的编程 发布:2024-10-11 12:10:39 浏览:467
怎么登录安卓版全民tv 发布:2024-10-11 12:10:33 浏览:622
服务器接收的参数名是什么 发布:2024-10-11 12:05:38 浏览:640
c语言中的goto 发布:2024-10-11 11:57:14 浏览:394
小司马编程 发布:2024-10-11 11:45:03 浏览:83
未使用标签进行编译 发布:2024-10-11 11:45:00 浏览:835
java开发源码下载 发布:2024-10-11 11:39:22 浏览:749