Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用Ajax成功注销之前,需要清除MySession数据_C#_Asp.net_Ajax_Webforms - Fatal编程技术网

C# 在使用Ajax成功注销之前,需要清除MySession数据

C# 在使用Ajax成功注销之前,需要清除MySession数据,c#,asp.net,ajax,webforms,C#,Asp.net,Ajax,Webforms,这是我第一次构建web应用程序。我想使用ajax访问Default.aspx中的logging函数来清空MySession。Ajax调用返回成功而不是错误,但是MySession尚未清除 <script type="text/javascript"> $(document).ready(function () { $("#Logout2").click(function (e) { alert(99);

这是我第一次构建web应用程序。我想使用ajax访问Default.aspx中的logging函数来清空MySession。Ajax调用返回成功而不是错误,但是MySession尚未清除

<script type="text/javascript">
        $(document).ready(function () {
            $("#Logout2").click(function (e) {
                alert(99);
                $.ajax({
                    type: 'POST',
                    url: 'Default.aspx/Loggingout',
                    data: '{a}',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (msg) {
                        window.location = '<%=this.ResolveClientUrl("~/Default.aspx")%>';
                },
                    error: function (e) {
                        alert(0);
                    }
                });
                e.preventDefault();
            });
        });
    </script>
如果你想复习我的会话

[WebMethod]
public static string Loggingout(string a)
{
    // if you use FormsAuthentication call this.
    FormsAuthentication.SignOut();

    // You can clear your session....
    HttpContext.Current.Session.Clear();

    // ... or just set your session to a new object.
    HttpContext.Current.Session["__MySession__"] = new MySession();

    return "done";
}
放弃方法销毁会话对象中存储的所有对象并释放它们的资源。如果不显式调用放弃方法,则服务器会在会话超时时销毁这些对象

参考:-

放弃方法销毁会话对象中存储的所有对象并释放它们的资源。如果不显式调用放弃方法,则服务器会在会话超时时销毁这些对象


参考:-

您使用的是哪种会话?在我看来,您正在使用自定义会话对象?还是使用内置会话?这样在Logging方法中就不会命中断点?或者在运行时断点是否未激活?你能确认注销运行吗?如何存储会话数据?我假设您在success msg变量中没有“完成”。你得到了什么?很明显,您的调用没有到达web方法,因为您的断点没有触发,这解释了为什么会话没有被清除,除非您没有正确地挂接调试器。请修改您的成功签名并发布所有返回的信息,以便我们可以帮助您。它应该是这样的:function(data,textStatus,jqXHR)。它应该告诉你发生了什么。在这里发布。你使用的是哪种会话?在我看来,您正在使用自定义会话对象?还是使用内置会话?这样在Logging方法中就不会命中断点?或者在运行时断点是否未激活?你能确认注销运行吗?如何存储会话数据?我假设您在success msg变量中没有“完成”。你得到了什么?很明显,您的调用没有到达web方法,因为您的断点没有触发,这解释了为什么会话没有被清除,除非您没有正确地挂接调试器。请修改您的成功签名并发布所有返回的信息,以便我们可以帮助您。它应该是这样的:function(data,textStatus,jqXHR)。它应该告诉你发生了什么。把它贴在这里。谢谢!:但是我发现还有一个问题,那就是我的ajax没有很好地工作,因为它没有命中logging函数。我尝试过在ajax->success:function(数据、文本状态、jqXHR)中修改成功部分。结果是data=[object],status=“success”,jqXHR=[object]。这个物体是什么意思?看看这里->。。。只是
警报(jqXHR.status+':'+jqXHR.statusText)并发布其输出。。。。并将ajax请求中的
data
属性更改为:
data:{a:“SOME TEXT”}
谢谢!:但是我发现还有一个问题,那就是我的ajax没有很好地工作,因为它没有命中logging函数。我尝试过在ajax->success:function(数据、文本状态、jqXHR)中修改成功部分。结果是data=[object],status=“success”,jqXHR=[object]。这个物体是什么意思?看看这里->。。。只是
警报(jqXHR.status+':'+jqXHR.statusText)并发布其输出。。。。并将ajax请求中的
data
属性更改为:
data:'{a:“一些文本”}'
public class MySession
{
    // private constructor
    private MySession()
    {
        UserID = Guid.Empty;
        Username = "";
        UserEmail = "";
        UserRole = "";
    }
    // Gets the current session.
    public static MySession Current
    {
        get
        {
            MySession session =
              (MySession)HttpContext.Current.Session["__MySession__"];
            if (session == null)
            {
                session = new MySession();
                HttpContext.Current.Session["__MySession__"] = session;
            }
            return session;
        }
    }
    public Guid UserID { get; set; }
    public string Username { get; set; }
    public string UserEmail { get; set; }
    public string UserRole { get; set; }
}
[WebMethod]
public static string Loggingout(string a)
{
    // if you use FormsAuthentication call this.
    FormsAuthentication.SignOut();

    // You can clear your session....
    HttpContext.Current.Session.Clear();

    // ... or just set your session to a new object.
    HttpContext.Current.Session["__MySession__"] = new MySession();

    return "done";
}
Session.Abandon() Method