我有一个启用了ajax的登录表单,它对服务器进行ajax调用以登录。如果成功,则使用用户名设置Session对象。然后,当它完成时,OnSuccess事件会调用部分视图更新,然后显示用户名。
这在VS中运行良好。但是,部署时却没有。我认为问题是Session没有足够快地更新,以便第二个ajax调用能够看到它。如果我刷页面,则更新用户名。
还有其他方法我应该这样做吗?我唯一能想到的是进行数据库调用以查看用户是否已登录,而不是依赖于会话对象。
这是部分视图:
<ul id="LoginLinksPartial">
@{ var customer = (NTC.PropertySearch.Models.Customer)Session["Customer"];}
@if (customer!=null)
{
@customer.DisplayName
@Html.ActionLink("Logout", "Logout", "Account")
}
else
{
<ul>
<a onclick="openLoginWindow()">Login</a>
<a onclick="openRegisterWindow()">Register</a>
</ul>
}
</ul>
答案 0 :(得分:0)
作为答案,所以可以解决问题:
客户端尚未将会话发送回服务器以创建会话握手。
在这种情况下,建议所有购物者在首次访问网站时都有会话,如果发生登录(在弹出窗口内),则会使用用户REAL ID更新会话,如果需要,还会更新篮子行。新会话ID或用户ID。