更改后,会话变量中的SessionID数据将丢失

时间:2013-03-06 07:31:59

标签: asp.net session-variables sessionid

我有asp.net webforms application /我需要做的是在用户登录时更改ASP.NET_SessionId。

当用户登录时,我执行以下代码:

SessionIDManager Manager = new SessionIDManager();
string NewID = Manager.CreateSessionID(Context);
bool redirected = false;
bool IsAdded = false;
Manager.SaveSessionID(Context, NewID, out redirected, out IsAdded);

因此,SessionId正在改变之后。

但是,之后如果我写了一些会话变量,例如

Session["username"] = username;

然后在回发后我们的数据丢失或与旧的会话ID相关联。 我们有

Session["username"] == null

请问您在更改SessionId后如何写入会话变量以便数据不会丢失?

1 个答案:

答案 0 :(得分:3)

命令“Manager.SaveSessionID”将删除旧sessionid的所有数据。 只有一种方法可以保存数据。这是手动移动数据。您可以使用以下功能登录按钮:

<link rel="import" href="./bower_components/polymer/polymer-element.html">
<link rel="import" href="./bower_components/paper-input/paper-input.html">
<link rel="import" href="./bower_components/iron-form/iron-form.html">

<dom-module id="my-form">
    <template>
        <b>Test</b>
        <iron-form>
          <form id="form" method="post" action="/save">
              <paper-input name="name" value=""></paper-input>
              <button type="submit">submit!</button>
          </form>
        </iron-form>
    </template>

    <script>
        /**
        * @customElement
        * @polymer
        */
        class MyForm extends Polymer.Element {
            static get is() { return 'my-form'; }
            static get properties() {
                return { };
            }
        }
        window.customElements.define(MyForm.is, MyForm);
    </script>
</dom-module>