最近做一个业务处理系统,因为它原有的用户系统使用asp开发,在新的业务系统中使用了asp.net,asp.net application要使用原来的asp用户系统,于是问题出现了,asp application怎样才能让用户登录的状态及用户信息在asp.net中依然有效呢。于是我们考虑用构造form来自动提交传递asp应用中的session变量。
例子如下
asp应用url为http://127.0.0.1/asp/,并在asp.net应用中的web.config设定
<!--设定asp应用的url-->
<add key="aspurl" value="http://127.0.0.1/asp/" />
在asp应用中增加两个asp页面system.asp和autopostform.asp
<!--system.asp-->
<%
session("uid")="user"
session("ispass")="ok"
server.transfer("autopostform.asp")
%>
<!--autopostform.asp-->
<%
response.write("<form name=t id=t action=""http://127.0.0.1/aspdotnet/getsession.aspx""
method=post >")
response.write("<input type=hidden name=uid" )
response.write( " value=" & session("uid") & " >")
response.write("<input type=hidden name=ispass" )
response.write( " value=" & session("ispass") & " >")
response.write("</form>")
response.write("<script>t.submit();</script>")
%>
在asp.net应用中用页面getsession.aspx来接受传递过来的session变量值
getsession.aspx.cs代码片段:
private void page_load(object sender, system.eventargs e)
{
if(!page.ispostback)
{
string aspurl=configurationsettings.appsettings["aspurl"].trim();
try
{
string fromurl=request.servervariables["http_referer"];
//验证是否从asp应用中提交过来
if(fromurl.startswith(aspurl))
{
string uid=request["uid"].tostring();
string state=request["ispass"].tostring();
if(uid!="" && state=="ok")
{
//表明用户在asp系统中已登录成功
}
}
else
{
response.write("<script>alert('非法用户或未登录用户');top.location.href='" + aspurl +
"';</script>");
}
}
catch
{
response.redirect(aspurl);
}
}
}
http://aspsir.cnblogs.com/archive/2005/12/24/41802.html
新闻热点
疑难解答
图片精选