2009-10-15 6 views
29

J'ai une application Silverlight (en utilisant MVC) et quand je construis en studio visuel, en utilisant Visual Studio Development Center, il n'y a pas de problème, le HttpContext.Current.User.Identity.Name a une valeurHttpContext.Current.User.Identity.Name est vide

Mais quand 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 studio visuel, donc je peux vérifier ce qui ne va pas dans IIS?

+2

Vérifiez vos paramètres d'authentification. HttpContext.Current.User est un IPrincipal qui enveloppe l'utilisateur actuel - qu'il s'agisse d'un utilisateur Windows, d'un principal de sécurité .NET Forms, d'un principal Passport ou d'un principal utilisateur personnalisé issu de votre propre projet. Je suppose que IIS7 autorise l'authentification anonyme, alors que pour une raison quelconque, Visual Studio s'exécute en tant qu'utilisateur authentifié. Quelle est la valeur .Name renvoyée dans Visual Studio et quels sont les paramètres d'authentification sur votre site IIS? –

+0

. Nom dans Visual Studio retourne "lapjordy \\ Jordy" (mon nom de connexion Windows) .Name dans IIS renvoie "" (chaîne vide) Je suis passé d'authentification anonyme dans IIS et activé l'authentification Windows, mais le navigateur me demande de me donner mes identifiants Windows .. La seule chose que je veux, c'est que l'application (silverlight) me donne le nom de mon utilisateur Windows actuel (sans le navigateur me demande mon nom d'utilisateur -> voir l'image) – Jordy

+0

http://img98.imageshack.us/content.php?page=done&l=img98/5376/printscreen1.png&via=mupload – Jordy

Répondre

1

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 fournir des informations d'identification, mais si ce n'est pas le même domaine, il ne pourra pas vous authentifier.

+0

Comment mettez-vous le serveur IIS et le navigateur (ou l'application?) dans le même domaine? et ai-je besoin de définir ces stratégies de groupe? Avez-vous un exemple? espérons que vous pouvez aider! :) – Jordy

38

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

Je vous suggère de lire le post Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

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

Vous pouvez configurer IIS dans le Panneau de configuration afin que votre site (ou machine) utilise l'authentification Windows et dénie 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> 
+1

A travaillé pour moi bien que mon Identity.Name était seulement vide par intermittence, de la deuxième à la seconde. Aucune idée pourquoi, serait intéressé si quelqu'un pouvait expliquer? – Ronnie

4

En outre, surtout si vous êtes un développeur, assurez-vous que vous êtes en train de vous connecter au serveur IIS et non à IIS Express fourni avec Visual Studio. Si vous déboguez un projet, il est parfois aussi facile, voire plus facile, de penser que vous êtes connecté à IIS alors que vous ne l'êtes pas.

Même si vous avez activé l'authentification Windows et l'authentification anonyme désactivée sur IIS, cela ne changera rien à votre simulation Visual Studio.

4

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

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

<windowsAuthentication enabled="false"> 

L'utilisateur compte du développeur a été connecté était très nouveau, donc unlikley il avait été modifié . Simple correctif il s'est avéré, changer cela à enabled = true et tout a couru comme il se doit alors.

+1

Ceci est la ** réponse que je cherchais. Mon paramètre IISExpress, cependant, sont stockés dans le fichier 'applicationhost.config'. – Nova

3

En plus de « répondu le 28 mars '11 à 12: 27Bryan Bedard »

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

1.Pour démarrer le Gestionnaire des services Internet à partir de 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.

2.Dans le volet Connexions, développez le nom du serveur, développez Sites, accédez au niveau dans le volet de la 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 d'authentification, sélectionnez l'authentification Windows, puis cliquez sur Activer.

Reference

0

Comme le dit @PaulTheCyclist, Si vous utilisez IISExpress l'authentification anonyme est activée par défaut, l'authentification Windows est désactivée.

Cela peut être changé dans ce que je suis sûr que l'on appelait PropertyPages (pas de clic droit -> propriétés). Sélectionnez le projet Web

Questions connexes