2016-07-13 14 views
0

Ich habe derzeit eine Intranet-Website mit IIS eingerichtet. Es verwendet die Windows-Authentifizierung. Es sieht aus, um Active Directory zu einem E-Mail-Adresse über die folgenden zwei Codezeilen des Benutzers zu erhalten:AD-E-Mail-Adresse ist auf der ASP.NET-Website unter NUR auf dem Server nicht verfügbar

 Dim userStr, userEmail As String 
     userStr = Page.User.Identity.Name.ToString 
     userEmail = System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress 

Dann wird diese E-Mail verwendet wird, eine E-Mail über SMTP-Client zu senden. Mein Problem ist, dass meine E-Mail-Adresse nicht erreichbar ist, wenn meine Website auf unserem Server gehostet wird. Dieser Code funktioniert perfekt auf meinem localhost. Ich habe meine Seite eingerichtet, um die E-Mail-Adresse anzuzeigen, sobald es zugegriffen wird, und es bleibt nur leer auf dem Server.

Kann mir jemand sagen, was könnte los sein? Es scheint auch, dass einige meiner Ereignisse nicht ausgelöst werden, aber ich denke, dass dies auf die leere E-Mail-Adresse zurückzuführen ist.

Danke

+0

Ist der Server auf einem Mitglied der Domäne gehostet? –

+0

Ja. Es ist ein virtueller Server auf der Domain unserer Site. Es hat auch mehrere andere Web-Anwendungen darauf gehostet. – Wyatt

Antwort

1

Ich verwende den folgenden Code am Ende, das funktioniert:

  Dim userStr, userEmail As String 
      userStr = Page.User.Identity.Name.ToString 
      Using HostingEnvironment.Impersonate() 
       Dim ctx As PrincipalContext = New PrincipalContext(ContextType.Domain) 
       Dim xUser As UserPrincipal = UserPrincipal.FindByIdentity(ctx, userStr) 
       userEmail = xUser.EmailAddress 
      End Using 

Es stellt sich heraus, das der Code in der ursprünglichen Frage wurde versucht, die E-Mail-Adresse für die Identität zurückzukehren Ich bin Verwendung in IIS. Wenn ich stattdessen diesen Code verwende, kann ich die E-Mail-Adresse des aktuellen Benutzers zurückgeben.