Bezdepbonusu7Программирование: статьи и ответы

Вопрос

MVC3 User.Identity.Name имеет значение null, Enironment.UserName не

Автор вопроса: KevОтветов: 1

Что ж, это интересная проблема. У меня есть приложение интрасети ASP.NET MVC3, работающее на сервере разработки Visual Studio, без NTLM. У меня нет домена AD на машине, на которой я тестирую.

Когда я пытаюсь использовать пользователя User.Identity.Name, возникает исключение нулевой ссылки, однако, когда я использую Environment.UserDomain и Environment.UserName, они заполняются правильными значениями.

Я серьезно запутался по этому поводу. Должен ли я избегать использования User.Identity.Name или есть причина, по которой это значение равно нулю?

ОБНОВЛЕНИЕ

Я только что заметил, что когда я использую System.Web.HttpContext.Current.User.Identity.Name, это работает, но просто использование User.Identity.Name не работает. Я пропустил оператор использования?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
  • В каком коде вы это запускаете? Каков весь контекст? (метод, нить...) Andrew Barber 09.02.2012
  • Я запускаю этот код непосредственно внутри класса контроллера, в конструкторе Kev 09.02.2012
  • Спасибо за обновления. У меня была такая же проблема, и System.Web.HttpContext.Current.User.Identity.Name решила ее. Спасибо! Denis M. Kitchen 19.09.2013

nullreferenceexceptionhttpcontext

Ответы

Ответ 1 · рейтинг 1 · m0s

Environment.UserName просто сообщает пользователю, который в данный момент запускает вашу программу, в вашем случае это пользователь, который запускает сервер разработки, я думаю, ему не нужно ничего делать с asp.net.

User.Identity.Name совершенно другое... оно сообщает вам имя вошедшего в систему человека в текущем контексте. И, кстати, вам не обязательно иметь NTLM, чтобы использовать его... вы можете настроить SqlMembershipProvider или настраиваемый поставщик членства и использовать проверку подлинности с помощью форм, и он будет нормально работать без AD.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы