C# HttpContext.Current.User.Identity.IsAuthenticated的Webmethods在Azure上不活动后停止工作
我正在用使用Ajax(json)/Webmethod函数的页面测试Azure服务器 其中一些函数在运行代码之前检查C# HttpContext.Current.User.Identity.IsAuthenticated的Webmethods在Azure上不活动后停止工作,c#,asp.net,azure,session-variables,webmethod,C#,Asp.net,Azure,Session Variables,Webmethod,我正在用使用Ajax(json)/Webmethod函数的页面测试Azure服务器 其中一些函数在运行代码之前检查HttpContext.Current.User.Identity.IsAuthenticated。不幸的是,如果用户登录并且页面没有向服务器发出完整的回发请求,那么只有那些检查HttpContext.Current.user.Identity.IsAuthenticated的webmethods函数才会在几分钟后完全停止运行,而不会给出任何错误。它们甚至不运行else代码块(见下文
HttpContext.Current.User.Identity.IsAuthenticated
。不幸的是,如果用户登录并且页面没有向服务器发出完整的回发请求,那么只有那些检查HttpContext.Current.user.Identity.IsAuthenticated的webmethods函数才会在几分钟后完全停止运行,而不会给出任何错误。它们甚至不运行else
代码块(见下文)
我在本地服务器上测试了这些页面,即使在长时间不活动之后,一切都正常工作。下面是webmethod的一个示例
[WebMethod]
public static string serviceMenu(int IDservice)
{
StringBuilder SBphotoMenu = new StringBuilder();
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// Do stuff
}
else
{
// Do other stuff
}
return SBphotoMenu.ToString();
}
我按如下方式调用webmethod:
function serviceMenu(IDservice) {
$.ajax({
type: "POST",
url: "/UserControls/serviceMenu",
data: "{ IDservice: " + IDservice }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
// Do Stuff
}
})
}
仅当用户登录时才会发生此行为。现在,如果用户未登录,则即使在Azure上,所有功能也能正常工作。
事实上,当webmethods停止运行,我刷新页面时,用户仍然登录,webmethods再次开始运行,但只运行了几分钟,然后同样的行为再次发生
出什么问题了?问题是由会话变量而不是自动验证引起的。事实上,Azure中的ASP.NET应用程序不会使用默认的“inProc”方法维护会话状态。Azure使用其他方法,其中一些方法成本高昂:表存储、SQL Azure、,或Windows Azure缓存。是否有任何特殊原因将用户身份验证放在方法上而不是放在Global.asax或某个基类上?我正在检查用户是否经过身份验证,以便在这些WebMethods中相应地创建字符串停止工作是什么意思?您的意思是当身份验证停止工作时,它总是输入else
逻辑吗?不,它甚至不输入else逻辑。。。。当我点击一个触发函数的按钮时,什么也没发生。你怎么调用这个方法?您正在使用jQueryAjax吗?你能给它写些代码吗?顺便问一下,您使用什么身份验证?您是否将其存储在会话中?