如何清除静态变量值并确定新的

时间:2015-09-02 10:29:08

标签: c# asp.net global-variables

我从我的MVC项目调用aspx网站并传递两个参数

在Session_start的Global.asax中,我将此参数分配给两个静态变量

protected void Session_Start(object sender, EventArgs e)
        {

            global.c = Request.QueryString["C"];
            global.u = Request.QueryString["U"];

        }

此aspx网站没有注销。 第一次正确分配值,这是从MVC传递的 但是对于下一个请求,它显示的是旧值。

例如:https://www.xxxxxx.com/aa.aspx?C=2&U=2

这次它将显示2和2

下次如果我拨打https://www.xxxxxx.com/aa.aspx?C=32&U=14

它将保留2和2。 由于没有退出,我无法使用

System.Web.Security.FormsAuthentication.SignOut();

由于会话将激活20分钟,因此该值将存在。

如何将这些参数全局存储在aspx中并用于所有页面。

Simeltaneously多个用户可以使用不同的参数访问此aspx页面。

1 个答案:

答案 0 :(得分:1)

请先检查基本功能。

第1步:将调试器放在session_start事件上。当你第一次来

时,断点会激活

https://www.xxxxxx.com/aa.aspx?C=2&U=2

第2步:现在再次点击查询字符串中的更改页面,您会注意到断点不会在时间点击。

原因:会话启动会在会话创建时点击一次,并且会在整个会话期间使用相同的值。

解决方案:转到客户端以保存一些临时值,就像您在页面加载时使用查询字符串一样。

PAGE1:分配Cookie值

https://localhost:9443/commonauth?commonAuthLogout=true&type=oidc2&sessionDataKey=7fa50562-2d0f-4234-8e39-8a7271b9b273&commonAuthCallerPath=http://localhost:8080/openidconnect/oauth2client&relyingParty=OpenidConnectWebapp

PAGE2:读取Cookie值

 protected void Page_Load(object sender, EventArgs e)
    {
    if (Request.Browser.Cookies)
        {
            //supports the cookies
         Response.Cookies["MyCookies"].Value = Request.QueryString["id"];
        }
    else
    {
        //not supports the cookies
        //redirect user on specific page
        //for this or show messages
    }
    }

您可以关注Trigger session

希望这会对你有所帮助。