Нет. Это совершенно разные вещи. HttpContext.User
- это ClaimsPrincipal
, созданный с помощью аутентификации конкретного пользователя. System.Security.Principal.WindowsIdentity
является основным, используемым пулом приложений. Таким образом, он будет константой для приложения, тогда как HttpContext.User
будет фактическим пользователем, выполняющим запрос к вашему приложению, при условии, что они аутентифицировались.
Я думаю, что люди могут запутаться при локальной разработке и использовании аутентификации Windows. В этом конкретном сценарии они будут одинаковыми, поскольку IIS Express работает под вашей учетной записью локального пользователя, что, разумеется, также подтверждает подлинность Windows. Практически в любой другой ситуации они будут отличаться, и откровенно очевидно, что System.Security.Principal.WindowsIdentity
не то, что вы ищете.
Теперь о том, почему User.Identity.Name
имеет значение null, вы, вероятно, ожидаете аутентификации в Windows, но не включили аутентификацию Windows для приложения, что означает, что вы на самом деле не вошли в систему. Щелкните правой кнопкой мыши свой проект (ы). выберите «Свойства» и перейдите на вкладку «Отладка». В нижней части экрана убедитесь, что установлен флажок Включить проверку подлинности Windows. Если у вас есть какая-либо часть вашего сайта, которая не требует авторизации, убедитесь, что включена опция Включить анонимную аутентификацию, или вы можете снять ее, вы хотите разрешить весь доступ к сайту для авторизации.