Exception lors du déploiement de IIS: échec de la Connexion de l'utilisateur 'IIS APPPOOL\DefaultAppPool"
Je suis en train de travailler à travers quelques WCF exemples dans "Windows Communication Foundation 4, étape Par Étape". Mon résultant de l'application s'exécute correctement tant que le service est hébergé dans casini. Il ne lorsque je de déployer le service IIS local. Lorsqu'il est déployé à IIS, je peux parcourir pour le svc page dans IE. Qui fonctionne.
Selon le livre, page 41, le pool d'application du compte doit être membre du rôle db_owner dans ma base de données. L'auteur suggère, après vérification de l'adresse correcte du service (déjà fait), de vérifier les autorisations de l'application de la piscine compte.
Comment puis-je vérifier le compte est utilisé par le pool d'applications de l'hébergement de mon service WCF? Actuellement à l'aide de la valeur par défaut d'application de la piscine et du pool d'applications IIS\DefaultAppPool est dans le rôle db_owner. IIS APPPOOL\ASP.NET v4.0 est également dans le rôle db_owner.
L'exception est...
System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'.
Comment puis-je résoudre ce problème? Merci!
Vous devez vous connecter pour publier un commentaire.
Solution trouvée ici:
Première chose que vous devez effacer si vous utilisez l'authentification windows et vous n'êtes pas mentionner aucun nom d'utilisateur mot de passe dans votre chaîne de connexion alors:
Ce qui se passe lorsque vous exécutez votre code par le biais de localhost:
lorsque vous exécutez votre client test wcf à partir de localhost, il sera en mesure de communiquer à la base de données locale, le mode de débogage de l'application est à la base de données d'appel par votre compte de service. Donc, il a accès à la base de données car l'devenv.exe est en cours d'exécution dans votre compte d'utilisateur.
Mais lorsque vous déployez votre service web dans IIS. Comprenez maintenant ce service s'exécute sous IIS ne pas sous votre compte. Si vous avez besoin d'attribuer des droits d'accès à des services internet (IIS) pour accéder à sql server pour l'authentification windows.
Ici votre service web ne serait pas en mesure de communiquer à l'instance de SQL server en raison de l'accès de l'homme.
Donc, si vous utilisez l'authentification windows pour vous connecter à votre base de données, il vous suffit de modifier les paramètres de pool d'Applications IIS.
Vous avez besoin de changer de pool d'Applications IIS identité du Système local.
Ci-dessous sont les Étapes pour l'authentification windows WCF:
•Ouvrir IIS (windows+R (run) puis tapez inetmgr, puis cliquez sur ok)
•double-cliquez sur le nom de votre PC sous Connexions
•Cliquez Sur Pools D'Applications
•Sélectionnez votre application de la piscine (DefaultAppPool)
•Ensuite, sous actions, sur la droite, cliquez sur Paramètres Avancés:
•Allez à la section Modèle de Processus et
•cliquez sur l'Identité.
•Maintenant, sélectionnez LocalSystem.
Maintenant, ouvrez sql server management studio:
ouvrez exécuter-> tapez ensuite ssms puis appuyez sur ok
dans ssms, connectez-vous en utilisant votre authentification windows compte.
ouvrez l'onglet sécurité
développez connexions de l'onglet
ensuite, vous serez en mesure d'afficher votre compte.
Maintenant, ouvrez les propriétés de votre compte
aller à userMapping
ensuite, sélectionnez la base de données vous souhaitez vous connecter
ensuite, vérifier l'appartenance au rôle des services que vous souhaitez utiliser pour la base de données sélectionnée
cliquez sur ok.
ajouter Trusted_Connection=True; propriété dans votre chaîne de connexion.
Enregistrer & déployer le service web.
Redémarrez le pool d'applications.
vous serez en mesure de se connecter à la base de données maintenant.
J'ai eu le même problème. Problème était que j'avais "IntegratedSecurity=True;" dans ma chaîne de connexion, mais j'ai été en utilisant l'authentification sql et en transmettant les informations d'identification dans le même temps. J'ai enlevé le IntegratedSecurity pièce et tout a fonctionné.