MVC3 User.Identity.Name является нулем, Enironment.UserName не является - PullRequest
2 голосов
/ 09 февраля 2012

Ну, это интересная проблема.У меня есть приложение ASP.NET MVC3 Intranet, работающее на сервере разработки 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;

1 Ответ

1 голос
/ 09 февраля 2012

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

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

...