c# - 具有 HttpContext.Current.User.Identity.IsAuthenticated 的 Webmethods 在 Azure 上不活动后停止工作

标签 c# asp.net azure session-variables webmethod

我正在使用使用 Ajax(json)/Webmethod 函数的页面测试 Azure 服务器。

其中一些函数在运行代码之前会检查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();
}

我按如下方式调用网络方法:

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 再次开始运行,但仅持续几分钟,然后再次发生相同的行为。

出了什么问题?

最佳答案

问题是由 session 变量引起的,而不是由身份验证引起的。事实上,Azure 中的 ASP.NET 应用程序不会使用默认的“inProc”方法维护 session 状态。 Azure 使用其他方法,其中一些方法成本高昂:表存储、SQL Azure 或 Windows Azure 缓存。

关于c# - 具有 HttpContext.Current.User.Identity.IsAuthenticated 的 Webmethods 在 Azure 上不活动后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285413/

相关文章:

c# - 转换 unicode 在 c# 中不起作用

asp.net - 引用 ascx 中的命名空间

css - 如何在mvc5中设置编辑控件的宽度

asp.net - Entity Framework 和 Linq - 比较 DateTime

php - 尝试从 azure blob 下载文件,mime 类型有问题

c# - 使用 C# 使用 Selenium WebDriver 进行跨浏览器测试

c# - 反射性能 - 创建委托(delegate)(属性 C#)

c# - .Net Mvc 4 中自己写账号注册方法的几个问题

sql-server - 有没有办法在Azure SQL中使用CLR Assembly?

powershell - 将虚拟文件夹添加到 Azure Web App