在asp.net中使用session常见问题集锦
问:为什么session在有些机器上偶尔会丢失?
答:可能和机器的环境有关系,比如:防火墙或者杀毒软件等,尝试关闭防火墙。
问:为什么当调用session.abandon时并没有激发session_end方法?
答:首先session_end方法只支持inproc(进程内的)类型的session。其次要激发session_end方法,必须存在session(即系统中已经使用session了),并且至少要完成一次请求(在这次请求中会调用该方法)。
问:为什么当我在inproc模式下使用session会经常丢失?
答:该问题通常是由于应用程序被回收导致的,因为当使用进程内session时,session是保存在aspnet_wp进程中,当该进程被回收session自然也就没有了,确定该进程是否被回收可以通过查看系统的事件查看器获得信息。
具体信息请参考:
session variables are lost intermittently in asp.net applications
http://support.microsoft.com/default.aspx?scid=kb;en-us;q316148
在1.0的时候也有一个bug会导致工作进程被回收并重启,该bug已经在1.1和sp2中修复。
关于该bug的详细信息请参考:
asp.net worker process (aspnet_wp.exe) is recycled unexpectedly.
http://support.microsoft.com/default.aspx?scid=kb;en-us;q321792
问:为什么当session超时或者abandoned后,新session的id和原来的相同?
答:因为sessionid是保存在客户端浏览器的实例里,当session超时在服务器重新建立session时,将使用浏览器传来的sessionid,所以当session超时后,再重新建立后sessionid并不变。
问:为什么每次请求的sessionid都不相同?
答:该问题可能是没有在session里面保存任何信息引起的,即程序中任何地方都没有使用session。当session中保存信息之后sessionid将一直和浏览器相关,此时的sessionid将不会在变化。
问:asp和asp.net之间是否可以共享session?
答:可以。但是这是一个比较复杂的过程,微软提供了官方的解决方案,请参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp
问:什么类型的对象可以保存在session
相关文档:
asax文件:
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="counter.ascx.cs" Inherits="JiAnWeb.counter" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<LINK href="css.css" rel="stylesheet">
<FONT face="宋体">
<TABLE id="table_coun ......
ASP.NET 4的Web Forms当中,最令人激赏的,则莫过于是URL Routing机制的全面支持。过去在ASP.NET 3.5 SP1当中,Web Forms或多或少就开始支持URL Routing机制,它让我们在网址的呈现以及使用上更加的有弹性。
过去我们在ASP.NET当中,习惯于底下这样的网址呈现方式:
http://myWebSite/EditProduct.aspx?Id=1
但最近几年R ......
今天在做一个无刷新判断公司名称,是否重复的时候,发现一个问题就是通过javascript传到asp.net页面的值是乱码。以前没有发现。因为 以前做测试时,都是用英文字符进行的测试。今天输入汉字后,发现有这种问题。感觉可能是编码的问题。就上网查了一下。找到一些方法,如下:
1.设置web.config文件
<system.web>
&l ......
更新:2007 年 11 月 可以像对 HTML 元素那样,以声明方式向 ASP.NET 网页上的控件添加客户端脚本。或者,如果事件或代码依赖仅在运行时可用的信息,可以通过编程方式向 ASP.NET Web 服务器控件添加客户端脚本事件。 说明: 可以在客户端脚本中通过 ID 引用控件。有关更多信息,请参见 ASP.NET 网页中的客户端脚本。 向 ......
代码如下:
System.Web.HttpBrowserCapabilities browser = Request.Browser;
string s = "Browser Capabilities\n"
"Type = " + browser.Type ;
"Name = " + browser.Browser ;
"Version = " + browser.Version ;
"Major Version = " + browser.Ma ......