0

そのため、電子メール アドレスを持たないこのページを誰かが読み込もうとしているときに、この問題に遭遇しており、回避策を見つけるのに苦労しています。

//getting email address for current user
    IIdentity id = WindowsIdentity.GetCurrent();
    WindowsIdentity winId = id as WindowsIdentity;
    if (id != null)
    {
        userName = winId.Name;

        string userInQuestion = userName.Split('\\')[1];
        string myDomain = userName.Split('\\')[0]; // this is the domain that the user is in
        // the account that this program runs in should be authenticated in there                    

        using (HostingEnvironment.Impersonate())
        {
            DirectoryEntry entry = new DirectoryEntry("LDAP://" + myDomain);
            DirectorySearcher adSearcher = new DirectorySearcher(entry);

            adSearcher.SearchScope = SearchScope.Subtree;
            adSearcher.Filter = "(&(objectClass=user)(samaccountname=" + userInQuestion + "))";
            SearchResult userObject = adSearcher.FindOne();
            if (userObject != null)
            {
                string[] props = new string[] { "mail"};
                {
                    foreach (string prop in props)
                    {
                        if (userObject.Properties[prop][0].ToString() != "")
                        {
                            CurrentUserEmail = userObject.Properties[prop][0].ToString();
                        }
                        else
                        {
                            CurrentUserEmail = "";
                        }
                    }

                }
            }

        }
    }

これは私が取得しているスタック トレースです。このフォームを送信する一部の人が電子メール アドレスを持っていない可能性があることは理解していますが、問題の回避策を見つけることができないようです。そこにあるif elseステートメントは私の最近の試みでしたが、エラーはまだ存在しています。

ここに画像の説明を入力

4

2 に答える 2

3

あなたの問題[0]userObject.Properties[prop][0].ToString()

配列が空の場合。つまり、要素がありません。エラーが発生します。試す

CurrentUserEmail = "";
var propertyArray = userObject.Properties[prop];
if (propertyArray.Lenght > 0) CurrentUserEmail = propertyArray[0] as string;
于 2013-11-08T15:15:10.243 に答える
0

例外をキャッチして、catch ブロックの "" にメール アドレスを割り当ててみませんか?

于 2013-11-08T15:06:47.480 に答える