2011-08-02 23 views
23

Estoy trabajando con algunos ejemplos de WCF en "Windows Communication Foundation 4 Step By Step". Mi aplicación resultante funciona bien siempre que el servicio esté alojado en casini. Falla cuando despliegue el servicio a IIS local. Cuando se implementa en IIS, puedo navegar a la página svc en IE. Eso funciona.Excepción al implementar en IIS: Error al iniciar sesión para el usuario 'IIS APPPOOL DefaultAppPool'

De acuerdo con el libro, página 41, la cuenta del grupo de aplicaciones debe ser miembro de la función db_owner en mi base de datos. El autor sugiere, después de verificar la dirección correcta del servicio (ya lo hizo), verificar los permisos de la cuenta del grupo de aplicaciones.

¿Cómo verifico qué cuenta usa el grupo de aplicaciones que aloja mi servicio WCF? Actualmente, se utiliza el grupo de aplicaciones predeterminado y la APLICACIÓN IIS \ DefaultAppPool en el rol db_owner. IIS APPPOOL \ ASP.NET v4.0 también está en el rol db_owner.

La excepción es ...

System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'. 

¿Cómo puedo solucionar este problema? ¡Gracias!

Respuesta

44

solución encontrada here:

  • Abrir IIS
  • doble clic en el nombre del PC en Conexiones
  • Haga clic en Grupos de aplicaciones
  • Seleccione el grupo de aplicación (DefaultAppPool)
  • A continuación, en acciones sobre el haga clic derecho en Configuración avanzada,
    • vaya a Proces s Sección del modelo y
    • haga clic en Identidad.
    • Ahora seleccione NetworkService.
+0

muchas gracias por esta solución, pero por favor puede usted descripción sobre este problema –

+3

Seleccionar NetworkService no me ayudó, lo que me solucionó el problema fue seleccionar la opción Cuenta personalizada en Identidad y completar mi nombre de usuario y contraseña . Gracias por la dirección – ParPar

+1

Ahora comenzó a dar error: Falló el inicio de sesión para el usuario 'WORKGROUP \\ machine $'. :( –

1

que tenían el mismo problema. El problema fue que tenía "IntegratedSecurity = True"; en mi cadena de conexión, pero estaba usando autenticación sql y pasando credenciales al mismo tiempo. Eliminé la pieza IntegratedSecurity y todo funcionó.

0
if not exists 
(select * from sys.server_principals where name='IIS APPPOOL\DefaultAppPool') 
    create login [IIS APPPOOL\DefaultAppPool] from windows; 
+2

Evita las respuestas con código único ya que no lo son útil para futuros usuarios – LcSalazar

0

Lo primero que necesita borrar si está utilizando la autenticación de Windows y no está mencionando cualquier nombre de usuario en la cadena de conexión a continuación:

¿Qué pasa cuando se ejecuta el código a través de localhost: cuando ejecute su cliente de prueba wcf desde localhost, podrá comunicarse con la base de datos a medida que el servicio de su cuenta active la aplicación del modo de depuración local. Por lo tanto, tiene acceso a la base de datos porque devenv.exe se ejecuta con su cuenta de usuario.

Pero cuando implementa su servicio web en IIS. Ahora entienda que este servicio se ejecuta bajo IIS no debajo de su cuenta. Por lo tanto, debe asignar derechos de acceso al servicio IIS para acceder al servidor SQL para la autenticación de Windows. Aquí su servicio web no podría comunicarse con el servidor SQL debido a un problema de derechos de acceso.

Si está utilizando la autenticación de Windows para conectar su base de datos, solo tiene que cambiar la configuración del conjunto de aplicaciones de IIS. Necesita cambiar la identidad del grupo de aplicaciones de IIS al sistema local.

A continuación se presentan los pasos para WCF autentificación de las ventanas: • Abrir IIS (Windows + R (marcha) a continuación, escriba inetmgr y, a continuación, haga clic en OK) • haga doble clic en el nombre del PC en Conexiones • Haga clic en Grupos de aplicaciones • Seleccione su grupo de aplicaciones (DefaultAppPool) • A continuación, en acciones a la derecha, haga clic en Configuración avanzada: • Vaya a la sección Modelo de proceso y • haga clic en Identidad. • Ahora seleccione LocalSystem.

Ahora abra su estudio de administración de servidor sql: run run-> escriba sms y luego presione ok en ssms, inicie sesión con su cuenta de autenticación de Windows. pestaña de seguridad abierta expande la pestaña de inicios de sesión luego podrá ver su cuenta.

propiedades Ahora abiertas de su cuenta van a userMapping a continuación, seleccione la base de datos que desea conectarse a continuación, comprobar los servicios de pertenencia a la función que desea utilizar para la base de datos seleccionada Haga clic en OK.

agregar Trusted_Connection = True; propiedad en su cadena de conexión. Guárdelo & despliegue el servicio web. Reiniciar el grupo de aplicaciones.

podrá conectar la base de datos ahora.

Cuestiones relacionadas