最近做一個業務處理系統,因為它原有的用戶系統使用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
新聞熱點
疑難解答
圖片精選