2009-10-15 28 views
29

Tengo una aplicación Silverlight (usando MVC) y cuando estoy construyendo en Visual Studio, usando el centro de desarrollo Visual Studio, no hay problema, el HttpContext.Current.User.Identity.Name tiene un valorHttpContext.Current.User.Identity.Name está vacío

Pero cuando estoy usando el mismo proyecto con IIS 7.5 (estoy usando Windows 7), HttpContext.Current.User.Identity.Name permanece vacío

¿Alguien que puede ayudar? ¿O sabe dónde puedo encontrar la configuración desde el centro de desarrollo de Visual Studio, para poder verificar qué está mal en IIS?

+2

Compruebe la configuración de autenticación. HttpContext.Current.User es un IPrincipal que envuelve al usuario actual, ya sea un usuario de Windows, principal de seguridad de Formularios .NET, principal de Pasaporte o un principal de usuario personalizado de su propio proyecto. Sospecho que IIS7 permite la autenticación anónima, mientras que por cualquier razón Visual Studio se ejecuta como un usuario autenticado. ¿Qué devuelve el valor .Name en Visual Studio y cuáles son las configuraciones de autenticación en su sitio IIS? –

+0

.Nombre en los retornos de Visual Studio "lapjordy \\ Jordy" (ventanas de mi nombre de acceso) .Nombre en IIS devuelve "" (cadena vacía) di vuelta de la autenticación anónima en IIS y activado la autenticación de Windows, pero entonces el el navegador me pide que me dé mis credenciales de Windows ... Lo único que quiero es que la aplicación (silverlight) me proporcione el nombre de mi usuario actual de Windows (sin que el navegador me pida mi nombre de usuario -> ver imagen) – Jordy

+0

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

Respuesta

1

El navegador solo detectará su nombre de usuario si el servidor IIS está en el mismo dominio y la configuración de seguridad dentro de su política de grupo lo permite.

De lo contrario, tendrá que proporcionarle las credenciales, pero si no está en el mismo dominio, no podrá autenticarse.

+0

¿cómo se coloca el servidor IIS y el navegador (o la aplicación?) en el mismo dominio? y ¿necesito establecer esas políticas de grupo? ¿Tienes un ejemplo? espero que pueda ayudar! :) – Jordy

38

Luché con este problema en los últimos días.

sugiero leer el blog de Scott Guthrie Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

Para mí el problema fue que, aunque tuve la autenticación de Windows habilitado en IIS y tuve <authentication mode="Windows" /> en la sección de web.config <system.web>, yo no estaba impidiendo el acceso anónimo. Esta última parte fue la clave. Debe evitar el acceso anónimo para garantizar que el navegador envíe las credenciales.

Usted puede configurar IIS en el panel de control para que su sitio (o máquina) utiliza la autenticación de Windows y niega el acceso anónimo o se puede añadir lo siguiente a su web.config en la sección system.web:

<authentication mode="Windows" /> 

<authorization> 
    <deny users="?"/> 
</authorization> 
+1

Funcionó para mí, aunque mi Identity.Name solo estaba en blanco intermitentemente, del segundo al segundo. Ni idea de por qué, estaría interesado si alguien pudiera explicarlo? – Ronnie

4

Además, especialmente si es un desarrollador, asegúrese de que de hecho se está conectando al servidor IIS y no al IIS Express que viene con Visual Studio. Si está depurando un proyecto, a veces es igual de fácil o incluso más fácil pensar que está conectado a IIS cuando en realidad no lo está.

Incluso si habilitó la Autenticación de Windows y deshabilitó la Autenticación anónima en IIS, esto no hará ninguna diferencia en su simulación de Visual Studio.

4

También tuve este problema recientemente. Trabajando con un nuevo cliente, tratando de obtener una aplicación antigua de formularios web que se ejecuta desde Visual Studio, con IISExpress usando la Autenticación de Windows. Para mí, el web.config se ha configurado correctamente

Sin embargo, el archivo de configuración IISExpress.config tenía:

<windowsAuthentication enabled="false"> 

El usuario cuenta el desarrollador se registra en estaba muy nuevo, por lo unlikley que había sido editado . Solución simple resultó, cambie esto a enabled = true y todo se ejecutó como debería.

+1

Esta es ** la ** respuesta que estaba buscando. Mi configuración de IISExpress, sin embargo, se almacena en el archivo 'applicationhost.config'. – Nova

3

Además de "respondió Mar 28 de '11 a las 12: 27Bryan Bedard"

En caso de que la solución no funciona, tiene que habilitar la autenticación de Windows en el administrador de ISS. Cómo hacer que:

1.To se inicia el Administrador de IIS desde el cuadro de diálogo Ejecutar: En el menú Inicio, Todos los programas, Accesorios y, a continuación, en Ejecutar. En el cuadro Abrir, escriba inetmgr y luego haga clic en Aceptar.

2.En el panel Conexiones, expanda el nombre del servidor, expanda Sitios y vaya al nivel en el panel de jerarquía que desea configurar, y luego haga clic en el sitio web o la aplicación web. 3. Desplácese a la sección IIS en el panel de Inicio y luego haga doble clic en Autenticación.

4.En el panel Autenticación, seleccione Autenticación anónima y luego haga clic en Deshabilitar. enter image description here

  1. En el panel de autenticación, seleccione Autenticación de Windows y, a continuación, haga clic en Habilitar.

Reference

0

Como dice @PaulTheCyclist, si se utiliza la autenticación anónima IISExpress está activado por defecto, la autenticación de Windows está desactivado.

Esto se puede cambiar en lo que estoy seguro solía llamarse PropertyPages (NO haga clic con el botón derecho en -> propiedades). Seleccione el proyecto web