2012-02-08 27 views
2

ではありません。これは興味深い問題です。 Visual Studio Development Server上で実行されているASP.NET MVC3イントラネットアプリケーションがありますが、NTLMはありません。私はテストしているマシンにADドメインを持っていません。MVC3 User.Identity.Nameがnull、Enironment.UserNameが

User.Identity.Nameというユーザーにしようとすると、null参照例外がスローされますが、Environment.UserDomainEnvironment.UserNameを使用すると、正しい値が入力されます。

私はこれについて深刻に混乱しています。 User.Identity.Nameの使用を避けるべきですか?これがnullである理由はありますか?

UPDATE

私はちょうど私が System.Web.HttpContext.Current.User.Identity.Nameを使用する場合、それは働くことに気づいたが、ちょうどUser.Identity.Nameを使用することはできません。私はusingステートメントを紛失していますか?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
+0

これを実行しているコードは何ですか?全体のコンテキストは何ですか? (メソッド、スレッド...) –

+0

私はこのコードをコンストラクタのControllerクラスの内部で直接実行しています – Kev

+0

UPDATEをありがとう。私も同じ問題があり、System.Web.HttpContext.Current.User.Identity.Nameが解決しました。ありがとう! –

答えて

1

Environment.UserNameはちょうど現在、それは私が推測する開発サーバを実行しているユーザーのあなたのケースでは、あなたのプログラムを実行しているユーザーに伝え、asp.netで何もする必要はありません。

User.Identity.Nameはまったく異なります...現在のコンテキストでログインしている人物の名前を示します。また、NTLMを使用する必要はありません.SqlMembershipProviderまたはカスタムメンバーシッププロバイダを設定してフォーム認証を使用すると、ADなしで正常に動作します。

+0

私はこのWebアプリケーションを社内イントラネット上で実行させ、展開するとActive Directoryを持つようにします。 ADドメインにない私のマシンで、開発中にUser.Identity.Nameを使用するにはどうすればいいですか? – Kev

+0

@Kev ADなしでWindows認証をテストするのと同じ問題があるので、私は自分自身を知りたいと思っています。私が知っている限り、開発サーバーでWindows認証を使用する方法はありません。あなたはIISが必要であり、ADが必要です。これは良いスタック・オーバーフローの問題を明確にするでしょう。 – m0s

関連する問題