C# 在使用Ajax成功注销之前,需要清除MySession数据
这是我第一次构建web应用程序。我想使用ajax访问Default.aspx中的logging函数来清空MySession。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);
<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