我已经使用HTTPContext.User.Identity.Name来获取当前用户名。它通过localhost运行,但在Azure Web App上返回null。
使用.Net Framework之前,HTTPContext.User.Identity.Name曾经起作用,但是现在我使用的是.Net Core,它不起作用。
当前代码:
private void SetUpUser()
{
var identityName = HttpContext.User.Identity.Name;
identityName = identityName.Replace("@example.com", "").Replace(".", "").Replace("example\\", "");
string userName = identityName.Replace(".", "");
}
错误消息:
NullReferenceException:对象引用未设置为对象的实例。 HomeController.cs中的CommissionInputApp.Controllers.HomeController.SetUpUser()
答案 0 :(得分:0)
您是否在OpenIdConnectOptions配置中设置了NameClaimType:
options.TokenValidationParameters = new TokenValidationParameters() { NameClaimType = "name" };
我没有创建自己的应用程序和Api,只是使用fabrikamb2cdomain作为代码示例提供的方法,即使.net core 2.2中某些方法已过时,例如cache.HasStateChanged。认证仍然有效,并使用User.Identity.Name,HttpContext.User.Claims设置正确的名称:
您还可以向我们提供更多详细信息和代码,以重现该问题。