Thread.CurrentPrincipal在Azure上具有null详细信息

时间:2014-11-19 01:01:13

标签: c# asp.net-mvc azure azure-web-sites adfs

我们正在尝试使用Thred.CurrentPrincipal来获取用户信息。但是,只要我们将其部署到Azure,CurrentPrincipal就为空。

var td = new TokenData();

var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;

if (claimsPrincipal != null)
{
    td.IsAuthenticated = claimsPrincipal.Identity.IsAuthenticated;

    td.Name = claimsPrincipal.FindFirst(ClaimTypes.Name).Value;
    td.Email = claimsPrincipal.FindFirst(ClaimTypes.Upn).Value;
    td.Surname = claimsPrincipal.FindFirst(ClaimTypes.Surname).Value;
    td.Role = claimsPrincipal.FindAll("http://schemas.xmlsoap.org/claims/Group")
        .Select(s=>s.Value);
}

我确认ADFS设置正确。如果有人能指出我的痛点,那就太棒了。

修改

CurrentPrincipal不是NULL,但细节是。因此,我们无法获得用户的姓名,角色和其他详细信息。

编辑2:

这就是Azure上发生的事情:

remote debugging on Azure

remote debugging on Azure

2 个答案:

答案 0 :(得分:0)

您可能需要启用“用户个人资料”才能让您的委托人工作。

将其打开在您网站的门户网站中,转到配置 - >应用设置并添加应用设置WEBSITE_LOAD_USER_PROFILE = 1.您的网站需要处于基本模式或标准模式才能生效。

答案 1 :(得分:0)