web-dev-qa-db-de.com

Authentifizierungsproblem beim Debuggen in VS2013 - iis express

Ich versuche, den Windows-Benutzernamen beim Debuggen in Visual Studio 2013 abzurufen. Ich verwende einfach:

httpcontext.current.user.identity.name

Wenn ich dies auf meinem Dev Server ausführte, funktioniert es einwandfrei. Wenn ich es auf einer früheren Version von Visual Studio im Debug-Modus ausführte, funktioniert es auch einwandfrei.

Meine Probleme sind - Wenn ich dies auf Visual Studio 2013 starte, bekomme ich eine leere Zeichenfolge.

Meine Web-Konfiguration sieht wie folgt aus.

<system.web>
    <authentication mode="Windows"/>
    <identity impersonate="false"/>
    <authorization>
       <allow users="*"/>
    </authorization>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
</system.web>
101
Neil Watson

Als ich das recherchierte, fand ich meine Antwort, konnte die Antwort jedoch nicht im Internet finden, also dachte ich, ich würde dies teilen:

Ich habe mein Problem behoben, indem ich meine Datei applicationhost.config geändert habe. Meine Datei wurde im Ordner "\ My Documents\IISExpress\config" gespeichert.

Es scheint, dass VS2013 meine Datei web.config ignoriert und verschiedene Authentifizierungsmethoden verwendet hat.

Ich musste diesen Teil der Datei so ändern, dass er wie folgt aussah. In Wahrheit habe ich nur die anonymeAuthentication in false und den windowsAuthentication-Modus in true geändert.

<authentication>

  <anonymousAuthentication enabled="false" userName="" />

  <basicAuthentication enabled="false" />

  <clientCertificateMappingAuthentication enabled="false" />

  <digestAuthentication enabled="false" />

  <iisClientCertificateMappingAuthentication enabled="false">
  </iisClientCertificateMappingAuthentication>

  <windowsAuthentication enabled="true">
    <providers>
      <add value="Negotiate" />
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>

</authentication>
128
Neil Watson

Ich hatte gerade ein Upgrade von VS 2012 auf VS 2013 durchgeführt und die aktuelle Benutzeridentität (HttpContext.User.Identity) kam als anonym vor.

Ich habe versucht, die Ausdrucksdatei IIS express applicationhost.config zu ändern, kein Unterschied.

Die Lösung bestand darin, die Eigenschaften des Webprojekts zu überprüfen. Drücken Sie F4, um die Projekteigenschaften abzurufen, wenn Sie die oberste Ebene des Projekts ausgewählt haben. Klicken Sie nicht mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften aus. Dies ist etwas völlig anderes.

Ändern Sie die anonyme Authentifizierung in "Deaktiviert" und die Windows-Authentifizierung in "Aktiviert".

Funktioniert wie Sauce :)

211
Toby Simmerling

Drücken Sie in Visual Studio 2013 AND VS15 (aber ich denke, ob es für alle anderen Versionen gleich ist) einfach F4 und ändern Sie diese beiden Eigenschaften: - Anonyme Authentifizierung: Disable - Windows Authentifizierung: Enable

41
ThaNet

In VS2013 F4 in Ihrem Projekt, um das Eigenschaftenfenster anzuzeigen und den anonymen Zugriff zu deaktivieren und "Windows-Authentifizierung" zu aktivieren. 

Dann wird es klappen. Keine Notwendigkeit, etwas anderes zu ändern

39
James Pressley

VS 2015 ändert dies. Es hat einen .vs-Ordner zu meinem Webprojekt hinzugefügt und die applicationhost.config befand sich dort. Ich habe die vorgeschlagenen Änderungen vorgenommen (Fensterauthentifizierung = true, anon = false) und es wurde ein Benutzername anstelle eines Leerzeichens ausgegeben.

9
Tom McDonald

Öffnen Sie die Datei applicationHost.config im Ordner C:\Users [userid]\Documents\IISExpress\config. Ändern Sie in dieser Datei den overrideModeDefault von anonymousAthentication und windowsAuthentication in "Allow".

 <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Allow" />
                </sectionGroup>

Ändern Sie als Nächstes den Wert für "false" für "AnonymousAuthenticationModule" und "WindowsAuthenticationModule"

  <system.webServer>
            <modules>
                <!--
                <add name="HttpCacheModule" lockItem="true" />
-->
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="false" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="false" />

Durch diese Änderungen können die vorhandenen Webkonfigurationseinstellungen überschreiben, was in der applicationHost-Datei für IIS Express enthalten ist.

8
ngiunta

Sie können auch die Projekteigenschaften für Ihr Webprojekt ändern, "Web" aus den linken Registerkarten auswählen und dann die Dropdownliste "Server" in "Local IIS" ändern. Erstellen Sie ein neues virtuelles Verzeichnis und verwenden Sie den IIS - Manager, um Ihren Site/App-Pool wie gewünscht einzurichten.

Ich bevorzuge diese Methode, da Sie normalerweise ein lokales IIS -Verzeichnis (oder eine Site) zum lokalen Testen haben. Andere Websites werden auf diese Weise ebenfalls nicht beeinflusst.

Web Project Properties

5
ScottLenart

Es scheint, dass die richtige Antwort von Benutzer3149240 oben gegeben wird. Wie Neil Watson jedoch darauf hinweist, ist hier die Datei applicationhost.config im Spiel. 

Die Änderungen können tatsächlich im VS-Eigenschaftsfenster oder in der Datei vorgenommen werden, allerdings an einer anderen Stelle. Am unteren Rand der Datei applicationhost.config befindet sich eine Reihe von Standortelementen. Jede App für IIS Express scheint eine davon zu haben. Durch das Ändern der Einstellungen in der Benutzeroberfläche wird dieser Abschnitt der Datei aktualisiert. Sie können also entweder die Einstellungen über die Benutzeroberfläche ändern oder diese Datei ändern. 

Hier ist ein Beispiel mit anonymem auth off und Windows auth on:

<location path="MyApp">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

Dies ist in der VS-Benutzeroberfläche gleichbedeutend mit:

Anonymous Authentication: Disabled
Windows Authentication: Enabled
1
EricksonG

F4 bringt mich nicht immer zu diesem Panel. Außerdem wird oft gesagt, ein Bild sagt mehr als tausend Worte. 

 enter image description here

0
kakugiki