0

アプリケーション エラーを追跡しようとしていますが、WinNT プロバイダー側​​の専門家ではありません。デバッグしているコードは次のとおりです。

 public string GetCurrentRequesterIdentity()
    {
        var a = HttpContext.Current.User.Identity.Name.Split('\\');

        using (var adEntry = new DirectoryEntry("WinNT://" + a[0] + "/" + a[1]))
        {
            return adEntry.Properties["FullName"].Value.ToString();
        }
    }

このコードをデバッグして "? New DirectoryEntry("WinNT://DOMAIN/User")" を実行すると、DOMAIN と User は (おそらく) 有効なエントリであり、ウィンドウは ObjectSecurity 行に対して次を返します。

ObjectSecurity: 'new DirectoryEntry("WinNT://[DOMAIN]/[USER]").ObjectSecurity' がタイプ 'System.NullReferenceException' の例外をスローしました

アプリケーションが「ネットワーク パスが見つかりませんでした」というエラーをスローするのを見たことがあります。このエラーを再現できたのは一度だけで、二度と再現できませんでした。残念ながら、2 人の本番ユーザーではほぼ毎回発生しますが、テスト環境では発生しません。

誰もこの状況を見たことがありますか?または、それを追跡するためにどこを見ればよいか知っていますか?

4

2 に答える 2

0

a[0]またはa[1]の値がnullのようです。これらの値が正しく、ドメインとユーザーが存在することを確認しましたか?a[0]またはa[1]の値をデバッグまたはログに記録して、エラーを見つけてください。

于 2012-06-15T18:48:18.623 に答える
0

これは、DirectoryEntry 行を削除し、代わりにユーザー名として HttpContext.Current.User.Identity.Name.Split('\') のみを参照することで修正されました。ログオンしているユーザーのフル ネームではなく、ユーザー名のみを返すことは問題ではありません。どうやら、システム管理者が対処したくない AD のアクセス許可の問題に関連していたようで、コードを削除することが最も簡単な解決策になりました。

于 2012-06-29T21:09:58.763 に答える