J'essaie d'get un site Web ASP.NET fonctionnant sous Vista (IIS7), en utilisant SQL Server et l'authentification Windows. Peu importe ce que je fais, quand je me connecte à la database, j'obtiens l'exception:
SqlException n'a pas été manipulé La connection a échoué pour l'user 'MyDomain \ MachineName $'.
Peu importe les parameters que j'applique, je n'arrive pas à faire passer IIS7 par mes identifiants de connection Windows.
Détails supplémentaires:
Aidez-moi!
L'usurpation on / off fait toute la différence, lorsqu'elle est correctement configurée. Ce que vous voulez est appelé 'délégation contrainte' et vous devez configurer IIS et ASP pour cela:
Par défaut, le server IIS n'est pas autorisé à vous impersonate
vers le server SQL. Il y a un article MSDN sur la façon de le configurer. Le process de configuration est complexe et sujet aux erreurs.
Si votre production ISS et SQL Server s'exécutent sur des servers différents, vous aurez besoin d'un administrateur de domaine pour configurer l'approbation de l'emprunt d'identité entre les deux servers. C'est typiquement un non-aller dans une grande organisation.
En plus de ne pas être déployé par les administrateurs normaux, l'emprunt d'identité empêche également les users de partager leurs connections dans le pool de connections SQL. Cela entraîne une pénalité de performance très perceptible même pour les sites Web de petite taille (5 users et plus).
Avez-vous essayé de créer un nouveau count d'user pour votre application, lui accorder les droits appropriés sur le server Sql, puis définir le pool d'applications à exécuter sous ce nouveau count? C'est ce que je fais habituellement, et cela fonctionne. Je n'exécute pas mon application sous NetworkService, LocalSystem ou d'autres counts embeddeds.
Votre string de connection contient-elle Integrated Security=SSPI
?
Avez-vous également changé le context d'asp.net pour devenir un user de domaine?
Voici un article MSDN sur ce sujet