相关疑难解决方法(0)

在ASP.NET中,何时应该使用Session.Clear()而不是Session.Abandon()?

Session.Clear()和Session.Abandon()都摆脱了会话变量.据我了解,Abandon()结束当前会话,并导致创建一个新会话,从而导致End和Start事件被触发.

在大多数情况下,最好调用Abandon(),例如将用户注销.有没有我使用Clear()的情况?是否存在很大的性能差异?

.net asp.net session session-state

113
推荐指数
3
解决办法
11万
查看次数

Session.Abandon()和Session.Clear()之间的区别是什么

销毁会话和删除其值有什么区别?你能举一个证明这个的例子吗?

我搜索了这个问题,但没有掌握全部答案.一些答案是:

  • Session.Abandon() 破坏会话
  • Session.Clear() 只删除所有值

一位朋友告诉我这个:

清除会话不会取消设置会话,它仍然存在与用户相同的ID,但只是清除了值.

放弃将完全破坏会话,这意味着您需要先开始一个新会话,然后才能在该会话中为该用户存储更多值.

以下代码有效,不会抛出任何异常.

Session.Abandon();
Session["tempKey1"] = "tempValue1";
Run Code Online (Sandbox Code Playgroud)

当您放弃会话时,您(或更确切地说是用户)将获得一个新的SessionId

当我测试Session时,当我放弃会话时它不会做任何改变.

我发现一个区别: session.Abandon()引发Session_End事件

asp.net session asp.net-session

103
推荐指数
4
解决办法
10万
查看次数

清除ASP.NET中的会话

我是一名新开发人员,我被分配了解决我们的注销功能无法正常工作的任务.我已经尝试了所有可以找到的方法.下面是我保留的日志,其中包括我使用过的方法.

  1. 在CommonHeader.ascx表单中添加了一个注销按钮

  2. 已经在logout.aspx.vb表单中尝试了许多方法来使其结束或清除会话,但它们都不起作用.

一个.logout.aspx.vb形式中定义的ClearSession子例程:

Session("Variable") = ""
FormsAuthentication.SignOut()
Session.RemoveAll()
Session.Abandon()
Session.Clear()
Run Code Online (Sandbox Code Playgroud)

湾 还将其添加到Page_Load子例程的顶部:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoServerCaching()
HttpContext.Current.Response.Cache.SetNoStore()
Run Code Online (Sandbox Code Playgroud)

C.还将ClearSession子例程更改Session.Contents.Remove("Variable")为Session("Variable") = ""

这些方法都不起作用.我们使用Siteminder,我一直想知道这是否是问题的根源.我在清除使用Siteminder的会话时找不到任何内容.另请注意,此应用程序使用Visual Studio 2003编码.

这是我在ascx文件中使用的按钮的代码:

athp:TopNavText Title ="Log Out"NavigateUrl ="logout.aspx"Target ="_ top"/

然后在"logout.aspx"表单上,我尝试使用上述方法之一或每种方法的组合.这是我触摸它之前的代码:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  

     ClearSession() 
     Response.Redirect("login.aspx") 

End Sub 

Public Sub ClearSession() 

     Session("Variable") = "" 

End Sub
Run Code Online (Sandbox Code Playgroud)

.net asp.net session siteminder logout

7
推荐指数
1
解决办法
5458
查看次数

如何退出会议MVC Razor视觉工作室

我正试图从MVC Razor中的会话注销,这是我目前在MainController中的内容:

[HttpPost]
public ActionResult Login(Users user)
{
    if (ModelState.IsValid)
    {
        if (ValidateUser(user.Email, user.Password))
        {

            FormsAuthentication.SetAuthCookie(user.Email, false);
            return RedirectToAction("Index", "Members");
        }
        else
        {
            ModelState.AddModelError("", "");
        }
    }
    return View();
}

private bool ValidateUser(string Email, string Password)
{

    bool isValid = false;

    using (var db = new ShareRideDBEntities())
    {
        var User = db.tblProfiles.FirstOrDefault(u => u.PROF_Email == Email);
        var ut = db.tblProfilesTypes.FirstOrDefault(t => t.TPE_ID == User.PROF_UserType);

        if (User != null)
        {
            if (User.PROF_Password == Password)
            {
                Session["UserID"] = User.PROF_UserID;
                Session["Name"] = User.PROF_FirstName; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc razor asp.net-mvc-4

5
推荐指数
1
解决办法
4万
查看次数

为什么不能只破坏一个会话

问:

我知道要销毁所有会话,我可以使用:

Session.Abandon()
Run Code Online (Sandbox Code Playgroud)

根据我的问题.

但为什么没有任何等效方法只能销毁一个会话.我应该使用

Session.Remove("varName")
Run Code Online (Sandbox Code Playgroud)

代替.

.net c# asp.net performance session

0
推荐指数
1
解决办法
1804
查看次数