【发布时间】:2015-05-17 09:28:55
【问题描述】:
我正在使用使用 Ajax(json)/Webmethod 函数的页面测试 Azure 服务器。
其中一些函数在运行代码之前会检查HttpContext.Current.User.Identity.IsAuthenticated。不幸的是,如果用户登录并且页面没有向服务器发出完整的回发请求,那么只有那些检查HttpContext.Current.User.Identity.IsAuthenticated 的 webmethods 函数会在几分钟后完全停止运行而不会出现任何错误。他们甚至不运行else 代码块(见下文)。
我已经在本地服务器上测试了这些页面,并且一切正常,即使在长时间不活动之后也是如此。这是一个网络方法的示例
[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();
}
我调用 web 方法如下:
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 再次开始运行,但仅运行了几分钟,然后再次发生相同的行为。
怎么了?
【问题讨论】:
-
是否有任何特殊原因您将用户身份验证放在方法而不是 Global.asax 或某些基类中?
-
我正在检查用户是否经过身份验证,以便在这些 webmethods 中相应地创建字符串
-
那么停止工作是什么意思?你的意思是当认证停止工作时它总是进入
else逻辑? -
不,它甚至没有进入 else 逻辑......当我点击一个触发函数的按钮时没有任何反应
-
如何调用方法?你在使用 jquery ajax 吗?你能写一些关于你如何称呼它的代码吗?顺便说一句,您使用什么身份验证?您是否将其存储在会话中?
标签: c# asp.net azure session-variables webmethod