web-dev-qa-db-fra.com

HttpContext.Current.User.Identity.Name est vide

J'ai une application Silverlight (utilisant MVC) et lorsque je construis dans Visual Studio, en utilisant Visual Studio Development Center, il n'y a pas de problème, le HttpContext.Current.User.Identity.Name a une valeur

Mais lorsque j'utilise le même projet avec IIS 7.5 (j'utilise Windows 7), HttpContext.Current.User.Identity.Name reste vide

Quelqu'un qui peut aider? Ou sait où je peux trouver les paramètres du centre de développement de Visual Studio, donc je peux vérifier ce qui ne va pas dans IIS?

36
Jordy

J'ai lutté avec ce problème ces derniers jours.

Je suggère de lire le billet de blog de Scott Guthrie Recette: Activer l'authentification Windows dans une application Web Intranet ASP.NET

Pour moi, le problème était que même si l'authentification Windows était activée dans IIS et j'avais <authentication mode="Windows" /> dans le <system.web> section de web.config, je n'empêchais pas l'accès anonyme. Cette dernière partie était la clé. Vous devez empêcher l'accès anonyme pour vous assurer que le navigateur envoie les informations d'identification.

Vous pouvez soit configurer IIS dans le Panneau de configuration pour que votre site (ou machine) utilise l'authentification Windows et refuse l'accès anonyme ou vous pouvez ajouter ce qui suit à votre web.config dans la section system.web:

<authentication mode="Windows" />

<authorization>
   <deny users="?"/>
</authorization>
46
Bryan Bedard

Ceux-ci pourraient résoudre le problème (il l'a fait pour moi). Dans IIS Express, modifiez les valeurs des propriétés du projet, "Authentification anonyme" et "Authentification Windows". Pour ce faire, lorsque le projet est sélectionné, appuyez sur F4, puis modifiez ces propriétés.

enter image description here

Si vous le déployez sur IIS localement, assurez-vous que la fonctionnalité "Authentification Windows" des machines locales est activée et que "Authentification anonyme" est désactivée.

Faire référence à

https://grekai.wordpress.com/2011/03/31/httpcontext-current-user-identity-name-is-empty/

10

En plus de "répondu le 28 mars 2011 à 12h27Bryan Bedard"

Dans le cas où la solution ne fonctionne pas, vous devez activer l'authentification Windows dans le gestionnaire iss. Comment faire ça:

1.Pour démarrer IIS Manager dans la boîte de dialogue Exécuter: dans le menu Démarrer, cliquez sur Tous les programmes, sur Accessoires, puis sur Exécuter. Dans la zone Ouvrir, tapez inetmgr, puis cliquez sur OK.

Dans le volet Connexions, développez le nom du serveur, développez Sites et accédez au niveau du volet de hiérarchie que vous souhaitez configurer, puis cliquez sur le site Web ou l'application Web. 3. Faites défiler jusqu'à la section IIS dans le volet Accueil, puis double-cliquez sur Authentification.

4.Dans le volet Authentification, sélectionnez Authentification anonyme, puis cliquez sur Désactiver. enter image description here

  1. Dans le volet Authentification, sélectionnez Authentification Windows, puis cliquez sur Activer.

Référence

7
Dmitry Toder

De plus, surtout si vous êtes développeur, assurez-vous que vous vous connectez bien au serveur IIS et non au serveur IIS Express fourni avec Visual Studio) Si vous déboguez un projet, il est tout aussi facile, sinon plus facile, de penser parfois que vous êtes connecté à IIS alors que vous ne l'êtes pas).

Même si vous avez activé l'authentification Windows et désactivé l'authentification anonyme sur IIS, cela ne fera aucune différence pour votre simulation Visual Studio.

4
Mishax

J'ai également eu ce problème récemment. Travailler avec un nouveau client, essayer d'obtenir une ancienne application de formulaires Web exécutée à partir de Visual Studio, avec IISExpress à l'aide de l'authentification Windows. Pour moi, le web.config a été correctement configuré

Cependant, le fichier de paramètres IISExpress.config avait:

<windowsAuthentication enabled="false">

Le compte d'utilisateur auquel le développeur était connecté était très nouveau, alors contrairement à ce qu'il avait été modifié. Une solution simple s'est avérée, changez-la en enabled = true et tout s'est déroulé comme il se doit alors.

4
PaulTheCyclist

La désactivation de toutes les autres options dans l'onglet d'authentification d'iis à l'exception de l'authentification Windows a résolu mon problème. Vérifiez s'il vous plaît..

Étapes:

  1. Ouvrez iis dans votre machine
  2. Sélectionnez votre application dans le pool d'applications
  3. Cliquez sur l'option d'authentification
  4. Désactiver toutes les autres options sauf l'authentification Windows (l'authentification anonyme doit être désactivée)

Veuillez vérifier cela et faites-moi part de vos commentaires. Ça a marché pour moi. j'espère que cela fonctionnera pour vous aussi .. enter image description here

2
Adarsh

Le navigateur ne détectera votre nom d'utilisateur que si le serveur IIS se trouve sur le même domaine et que les paramètres de sécurité de votre stratégie de groupe le permettent.

Sinon, vous devrez lui fournir des informations d'identification, mais s'il ne se trouve pas sur le même domaine, il ne pourra pas vous authentifier.

1
cjk

En dehors de toutes les raisons évidentes mentionnées précédemment, il peut y en avoir une autre: vous n'avez pas mis d'attribut Authorize au-dessus de votre contrôleur, comme ça:

[Authorize(Roles = "myRole")]
[EnableCors(origins: "http://localhost:8080", headers: "*", methods: "*", SupportsCredentials = true)]
public class MyController : ApiController

C'est du moins ce qui a fonctionné pour moi.

1
cornhedgehog

Comme le dit @PaulTheCyclist, si l'utilisation de l'authentification anonyme IISExpress est activée par défaut, l'authentification Windows est désactivée.

Cela peut être changé dans ce que je suis sûr d'être appelé PropertyPages (PAS avec le bouton droit -> propriétés). Sélectionnez le projet web

0
waxingsatirical