不行的,你的做法行不通"在asp.net下写一个.net组件,这个组件只完成返回session值,设置session值。"
"写个com组件(同时也是asp组件),这个组件访问上面的.net组件,从而实现asp下读取asp.net下的session值"这两个组件不在同一个进程中运行,你不能得到当前应用程序的Session
"写个com组件(同时也是asp组件),这个组件访问上面的.net组件,从而实现asp下读取asp.net下的session值"这两个组件不在同一个进程中运行,你不能得到当前应用程序的Session
解决方案 »
- FLEX 入门
- 文件上传的问题!!在线等待
- js取treeview checkbox 选中值
- DropDownList的问题:
- (00分求)个后台增加页面的程序我想根据服务器路径取得页面的控件
- 一人ASP.NET中取asp:TextBox的值的问题(疑难杂症:跪求解答).........请高手帮忙解决啊。。
- 请教,如何遍历datagrid中的checkbox?
- 一个aspx页面里有几个<input type=file>文件框和 AutoPostBack 的服务端客控件,怎样在服务端控件触发 PostBack 之后保持文件框里输入的
- DataGrid中一个DropDownList控件,怎么才能捕捉到这个控件的SelectedIndexChanged事件?
- 急:请问在连接地址<a.../a>中怎么加入数据绑定?
- 如何取出一个字符串中的数字
- 本打算去很远的地方看很久未见的女友,可惜又去不上了,哎!(忧郁中散分……)
这样应为该Web Service和ASP.Net同在一个应用程序域,应该可以做到
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp2. use hidden controlsTransfer Session Variables from Classic ASP to ASP.NET
http://www.eggheadcafe.com/articles/20021207.asp
_sessionList.Add(Session.SessionID,Session);Session_End的时候:
_sessionList.Remove(Session.SessionID,Session);另外写一个设置Session值的方法:
public static void SetSessionValue( string sessionID,object key,object value )
{
object session = _sessionList[sessionID];
if( session==null )
throw new ApplicationException("指定Session不存在!");
((HttpSessionState)session).Add(key,value);
}另外类似的写一个返回Session值的方法为了满足应用,可能还需要写一些在所有Session中遍历,获取符合条件的Session进行处理,这些方法写起来就不难了最后,写一个Web Service,把要暴露的方法写成Web Method,调用Global里面的静态方法
1. use SQL ServerHow to Share Session State Between Classic ASP and ASP.NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp2. use hidden controlsTransfer Session Variables from Classic ASP to ASP.NET
http://www.eggheadcafe.com/articles/20021207.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp这个方法是完全禁用了网站提供的session 自己派生了一套session。
然后在asp 和 asp.net 间通用。
2. use hidden controlsTransfer Session Variables from Classic ASP to ASP.NET
http://www.eggheadcafe.com/articles/20021207.asp这个方法是两边的session完全同步,也就是有两套session 只不过需要同步而已。暂时对这两种方案还难以取舍。
不象
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp
提供的解决方案,asp 和 asp.net 的session 都弃用;
也不象http://www.eggheadcafe.com/articles/20021207.asp 提供的方案,asp 和 asp.net的session都使用,然后提供一个同步接口;
timmy3310(tim) 提供的 在Global里面写一个Session的List,其实是在asp.net下出现了两个保存session的地方,(微软自己的一套,我们自己的一套)
我在考虑是不是可以公用一套??但是微软没有这样的接口,asp.net下如果选择的是把session保存在数据库中,好像应该就可以公用一套了。
实际上我的方法并没有保存两套Session,Session还是由ASP.Net维护,我在Global里面只是维护了对所有Session引用的列表,其实Session还是那个Session,我并没有复制它,只是用了一个变量来引用,就象指针一样
1、use SQL Server
How to Share Session State Between Classic ASP and ASP.NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/converttoaspnet.asp思归提供的这个方法就是自己创建了一个自己的Session 而不是使用ASP的Session ,也不是使用Asp.net的Session.
误解你的意思了,你的意思是把所有的ASP代码全部转换为ASP.net代码?? 看来你没有做过比较大型一些的网站,全部的改写不仅有商业上的巨额费用,还会出现各种本地使用中不会出现问题,上传到服务器上会去出现各种麻烦的问题。To jjstar(北人) :
真faint,把.net中的session设置为sqlserver的mode,让asp去connect...select呗
不是这么简单的,比如Session中可以记录各种对象,如果我ASP.net的Session中记录了一个ADO.net的对象,在ASP中我如何使用呀, 另外,更重要的一个问题是,你不清楚微软记录Session的核心代码,比如,记录一个字符串到Session中,微软用了加密,你不知道密钥,你如何获得这个字符串呀。把.net中的session设置为sqlserver的mode,让asp去connect...select呗,使用这个方法的前提条件是你知道微软对Session处理的核心代码,否则你知道这些记录的是啥东西呀。可看不可吃,这种方法只能想,无法实现。
1、Asp.net & Asp.net
这两个系统都已经成型,而且Session中放的东西都不一样,所以要公用一个Session会造成资源上的浪费,所以我做的时候,采用了一个Web Service来提供统一的验证,用自己生成的唯一的Key来标识用户,每个子系统用Mapping来对应该Key和SessionID的关系,不过有一个缺点,Web Service这边需要手动控制超时,而且必须要比子系统的Session超时时间长,要不然就会出现子系统尚未超时,而验证服务器已经超时的情况。
这种方式是当初没办法而做出来的,后来经过检讨,感觉这种模式还是有可取之处,只是设计的时候要谨慎一些,毕竟Web Service是开放的,而且其安全性还有待提高。2、ASP & JSP
这个案例采取的方法类似思归老大提供的第二个方案,只是更复杂一些。我们在两个系统的切换处产生一个Token,然后把要传递的数据存放到另一个供通讯的数据库,另一个系统收到Token的时候,根据Token到数据库取出传递的数据。
另外传递Token的时候,采用了DES加密,并且在取到数据之后,把该Token设为无效,保证了尽可能的安全。
因为这是个银行系统,所以安全性要求比较高,但是效率上受到了影响。
四个红星应该是老前辈了。晚生斗胆说的这些还望前辈指教 :)
如果两个应用都是asp.net做的,完全没有必要考虑session的问题,利用asp.net提供的多台服务器的session可以保存在一台服务器上,或者一个数据库中就可以了。
而且,两个WEB应用只有用户访问到指定的应用时候,才会给Session中增加对应的对象。你提出的用Web Service来提供统一的验证,我觉得完全没有必要。to : fa2002(叮当)
“擦屁股”的工作从大学毕业一直碰到过,预先定义的不够合理,后面改起来太痛苦了。公司的工作需要进度,需要时间限制,没法退掉从写,不象自己的程序,有好的想法,从新来过。
《application center 专家指南》 一本书??? 那里可以看到???
另外,如果从效率的情况来考虑,保存在缓存中比数据库中要快很多,(当然,应用中不能把很多东西都保存在session中是常识)
如果两个应用都是asp.net做的,完全没有必要考虑session的问题,利用asp.net提供的多台服务器的session可以保存在一台服务器上,或者一个数据库中就可以了。这个要求这些服务器都在同一个 Web Farm 中,如果你无法保证这个条件,只有使用你的那种方式了。
我的第一个应用是这样的,两个子系统不是在一个网段之中,当然使用Remoting也可以,但是当初我们选择了Web Service
另外开始也有一种选择就是使用State Server,但是这样会有资源的浪费,这我也说过了,因为两边的Session存放的东西完全不一样,如果是开始开发的时候选择,当然不会使用这种方式。
实际上一个系统是开发了很久,后一个系统开发了一大半之后才有这个需求的。
我也说过了,这种方式值得商榷,只是我们当初没有办法的选择(其实也有其他的选择,只是时间关系,这种方式比较好实现)。
1:用户登入时,同时初始化两套系统(asp和asp.net)的session
2:要求在主页面中显示两套系统的东西(主要时流程信息)
3:实现两套系统的互访我现在时这样做的:
登入页面是asp.net,在登入的时候调用一个asp页面,这个页面的功能是初始化asp系统中的session,当然,这个asp页面是放在asp系统中的,初始化系统后,各自的session保存在各自的系统中两套系统之间互访是通过一个中转页面进行的,比如asp要访问asp.net,就访问asp.net中的一个页面bridge.aspx,在bridge.aspx中觉定怎么调用asp.net系统为了保证asp访问asp.net时的域和asp.net系统内部的域相同,我的主页面是在asp.net系统中的,在主页面中嵌套了asp页面还有一点我不明白:服务器怎么判断程序域的?也就是服务器怎么判断不同的页面可以访问同一个session?谢谢
<machineKey
validationKey="123456789adcdef123456789adcdef123456789adcdef123456789adcdef"
decryptionKey="abcd123456789adcdefabcd123456789adcdefaaa123456789adcdef000"
validation=SHA1" copy自:http://luyu.net/list.aspx?sid=727&fid=7
思归一放就是300啊 :P
我从来不放分,象非技术的问题,我一般都是0分,我不想让任何想捞分的人到我的帖子里面,我只想讨论。
http://www.csdn.net/
http://expert.csdn.net/
http://search.csdn.net/
可以通过Cookies的domain来设置通用一个用户状态。
第一,既然你要传SESSION,显然必须在同一个站上,因此用COOKIE没有跨域的问题。
第二,要传的内容主要是登录信息之类的信息,量不会很大,COOKIE也能胜任。以下是一个示例:
test.asp
=========================
<html>
<head>
<title>asp session to asp.net</title>
</head>
<body>
<a href="test.aspx">asp.net</a>
<%
Response.Cookies("mycookie")("type1") = "sugar"
Response.Cookies("mycookie")("type2") = "ginger snap"
%>
</body>
</html>test.aspx
===========================================
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="test"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>test</TITLE>
<META NAME="GENERATOR" CONTENT="Microsoft Visual Studio.NET 7.0">
<META NAME="CODE_LANGUAGE" CONTENT="Visual Basic 7.0">
<META NAME="vs_defaultClientScript" CONTENT="JavaScript">
<META NAME="vs_targetSchema" CONTENT="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<BODY MS_POSITIONING="FlowLayout">
<FORM ID="Form1" METHOD="post" RUNAT="server">
<ASP:LABEL ID="ck1" RUNAT="server"></ASP:LABEL><BR>
<ASP:LABEL ID="ck2" RUNAT="server"></ASP:LABEL><BR>
</FORM>
</BODY>
</HTML>test.aspx.vb
=================================
Imports System.WebPublic Class test
Inherits System.Web.UI.Page
Protected WithEvents ck1 As System.Web.UI.WebControls.Label
Protected WithEvents ck2 As System.Web.UI.WebControls.Label#Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ck As HttpCookie
ck = Request.Cookies("mycookie")
ck1.Text = ck("type1")
ck2.Text = ck("type2") End SubEnd Class
如果用户一直在访问asp的页面,等到返回asp.net页面后,
asp.net的session却有可能超时了,这种情况该如何处理呢?
新页面时,session值的丢失。
首页判断
if i=1 then session("name")="" then
读取
end if
2对无限制用户的session变量
读取cookie值