2009-05-13 4 views
0

Ich versuche, den Benutzernamen und Client-Computername der Person, die an einem Computer in unserem Intranet in ASP.NET angemeldet ist, abzurufen. Dies ist nur für Protokollierungszwecke. Ich erhalte den Benutzernamen "System.Security.Principal.WindowsIdentity.GetCurrent(). Name", Problem ist, wer auf diese Website zugreifen mit dem gleichen Benutzernamen (das ist Server-Namen, wo ich meine Anwendung bereitgestellt habe) für alle. Bitte helfen Sie. Ich verwende den Windows-Authentifizierungsmodus in web.config.Retreving Client-Benutzername mithilfe von Windows-Authentifizierung

Antwort

2

Der Name des Benutzers haben werden können, wie durch @Mehrdad beschrieben. Für den Namen der Maschine des Benutzers können Sie verwenden Httprequest Objekt wie folgt:

if(Request.IsAuthenticated) 
    string userName = Request.LogonUserIdentity.Name; 
string machineAddress = Request.UserHostAddress; 
string machineName = Request.UserHostName; 

(edit)

In der Datei web.config verwende ich diese Zeile:

<system.web> 
    <authentication mode="Windows"/> 
</system.web> 

In den default.aspx.cs verwende ich dies:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 

     if (Request.IsAuthenticated) 
     { 
      sb.AppendFormat("User Name: {0}<br/>", Request.LogonUserIdentity.Name); 
     } 
     else 
     { 
      sb.Append("Request not authenticated"); 
     } 

     sb.AppendFormat("Machine Address: {0}<br/>", Request.UserHostAddress); 
     sb.AppendFormat("Machine Name: {0}<br/>", Request.UserHostName); 

     lblTest.Text = sb.ToString(); 
    } 
} 

Th wird proucing folgende Ausgabe:

Benutzername: HPAS \ amantur

Maschine Adresse: 127.0.0.1

Machine Name: 127.0.0.1

+0

ich treid aber es doesn Es funktioniert nicht das gleiche Ergebnis, wenn etwas fehlt in IIS setting.thanks für die Hilfe. – Xyz

+0

danke für die Hilfe.Ich habe versucht, diesen Code, aber es sagt "Anfrage nicht authentifiziert" ist ich vermisse etwas thing.y ich bekomme diese Nachricht.Klicken Sie Hilfe – Xyz

+0

Got it !! Sie müssen den anonymen Zugriff auf die Webanwendung vom IIS-Manager aus deaktivieren. Wenn anon access aktiviert ist und Sie keine Benutzer-ID/Passwort eingeben müssen und Request.IsAuthenticated ist false, da es mit einem anonymen Profil arbeitet. – TheVillageIdiot

1

Der Code, den Sie verwenden, erhält die WindowsIdentity, die dem aktuellen Thread zugeordnet ist (die Identität, auf der ASP.NET ausgeführt wird). Es sei denn, Sie imitieren sich aufgrund der Identität des Client-Benutzers, die nicht funktioniert. Sie müssen diese verwenden:

HttpContext.Current.User.Identity.Name 
Verwandte Themen