そのため、電子メール アドレスを持たないこのページを誰かが読み込もうとしているときに、この問題に遭遇しており、回避策を見つけるのに苦労しています。
//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ステートメントは私の最近の試みでしたが、エラーはまだ存在しています。