Échec de la connexion de l'utilisateur 'IIS APPPOOL\ASP.NET v4.0'
J'ai un projet web (C# Asp.Net EF 4, MS SQL 2008 et IIS 7) et j'ai besoin de migrer vers IIS 7 localement (pour le moment fonctionne très bien avec de CASSINI).
Localement dans IIS, j'ai mon Default Web Site
avec mon déployer. Mes deux déployer et Default Web Site
sont sur la piscine ASP.NET v4.0 (regarder l'image pour les paramètres) de la piscine du Framework cible 4 que mon projet web.
Lors de la visite du site, le navigateur n'affiche pas la page et de permettre au navigateur de télécharger la page au lieu.
J'ai d'autres projets en cours d'exécution sur IIS localement et ils fonctionnent sans problèmes (mais ils ne pas utiliser Entity Framework).
À l'aide de l'Enregistreur d'Événements, je vois des erreurs comme ci-dessous:
Exception information:
Exception type: EntityException
Exception message: The underlying provider failed on Open.
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
Login failed for user 'IIS APPPOOL\ASP.NET v4.0'.
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
Mise à JOUR:
Vous pouvez le lire dans les ressources sur cette question que les autorisations doivent être accordées sur MS SQL 2008 manuellement comme arift expliquer dans sa réponse.
À l'aide de IIS 7.5 et MS SQL 2008 R2, réglage manuellement à l'autorisation ne devrait pas être nécessaire.
- avez-vous prévu l'application d'identité du pool d'autorisation sur le site web de dossier?
- je ne suis pas sûr, pourriez-vous s'il vous plaît dites-moi comment le faire?
- learn.iis.net/page.aspx/624/application-pool-identities
- en fait, comme à la dérive dit, ce pourrait être un sql problème de sécurité. Il est préférable de définir un compte d'Utilisateur NT pour le pool d'applications, puis accorder cette autorisation sur le site web du dossier et à la appropriée de tables en SQL
- merci Christina, j'ai suivi vos ressources et de tous est la valeur de IIS et le dossier semble comme décrit, j'ai toujours le même problème 🙁
- Je vous encourage à examiner les accepté de répondre ici, et de choisir le plus approprié de réponse. L'on a accepté la réponse est à la tête de nombreuses personnes en sécurité d'un trou noir. Oui, il fonctionne. Non, il n'est vraiment pas une bonne idée. Voir mes commentaires ci-dessous.
- Merci pour vos commentaires, je dois ajouter que ma question faisait référence à un problème sur ma machine locale pour le développement de problème de sécurité n'était pas vraiment un sujet de préoccupation.
- IIS Local, pas d'exprimer. été en mesure de corriger en ajoutant que la signalées compte dans l'erreur signalée à sql server. Dans mon cas, c'était: IIS APPPOOL\DefaultAppPool c'est pour le développement local, environnement -- vs 2017
- GAAAHH! Je la regardais pendant environ 4 heures à essayer de le comprendre, quand j'ai enfin réalisé ma chaîne de connexion a été pointant vers localhost, mais la base de données est sur localhost\SQLEXPRESS !! Une "base de données n'est pas trouvé" message d'erreur serait sympa, Microsoft!
Vous devez vous connecter pour publier un commentaire.
Dirait qu'il ne tente d'ouvrir une connexion à SQL Server.
Vous avez besoin pour ajouter une connexion à SQL Server pour
IIS APPPOOL\ASP.NET v4.0
et l'octroi d'autorisations pour la base de données.Dans SSMS, sous le serveur, développez Sécurité, puis à droite, cliquez sur Connexions et sélectionnez "Nouvelle Connexion...".
Dans la Nouvelle boîte de dialogue de Connexion, entrez le pool d'applications que le nom de connexion et cliquez sur "OK".
Vous pouvez ensuite cliquez-droit sur la connexion pour le pool d'applications, sélectionnez Propriétés, puis sélectionnez "Mappage de l'Utilisateur". Vérifier la base de données appropriée, et les rôles appropriés. Je pense que vous pouvez simplement sélectionner
db_datareader
etdb_datawriter
, mais je pense que vous auriez encore besoin d'accorder des autorisations pour exécuter des procédures stockées si vous le faire grâce à EF. Vous pouvez vérifier les détails pour les rôles ici.Vous pouvez modifier la ApplicationPoolIdentity de IIS7 -> Pools d'Applications -> Paramètres Avancés.
Sous ApplicationPoolIdentity, vous trouverez le système local. Cela rendra l'exécution de votre application sous
NT AUTHORITY\SYSTEM
, qui est une connexion pour la base de données par défaut.Edit: Avant d'appliquer cette suggestion vous devriez noter et de comprendre les implications de sécurité.
vous assurer que vous avez...
dans votre Chaîne de connexion
J'ai résolu ce problème en utilisant sql à l'image suivante.
Clic droit sur db-> propriétés -> autorisation -> View Server autorisation -> et puis sélectionnez
IIS APPPOOL\ASP.NET v4.0
et accorder la permission.D'exécuter ce script sql
Si dans le chaîne de connexion vous avez spécifié:
mais dans le chaîne de connexion il y a:
SQL Server utilise l'Authentification Windows, de sorte que votre connexion valeurs seront ignorées et remplacées (IIS allons utiliser le compte Windows spécifié dans l'Identité de l'utilisateur le profil).
plus d'info ici
La même chose s'applique si, dans le chaîne de connexion il y a:
ou
car l'Authentification Windows sera utilisé pour se connecter au serveur de base de données.
plus d'info ici
aller dans iis -> pools d'applications -> trouver votre pool d'applications utilisé dans l'application
sélectionnez votre pool d'applications utilisées pour l'application clic droit sélectionnez paramètres avancés
Sélectionnez identité du pool d'applications
sélectionnez construit en tant que Système Local
et cliquez sur ok
Je déteste le ApplicationPoolIdentity. J'ai toujours mis un Compte d'Utilisateur Windows que le compte sur AppPools.
Comme à la dérive dit, il ne sembler une base de données de problème de sécurité. Afin de créer un compte d'utilisateur NT, de l'attribuer à l'ASP.NET v4.0 pool d'applications et ensuite accorder l'autorisation sur le site web de dossier et le tableau correspondant(s) en SQL.
Ne pas utiliser la Sécurité Intégrée.
Utilisation
User Id=yourUser; pwd=yourPwd;
Cela résout le problème.
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 problème de droits d'accès et d'Échec de la Connexion de l'utilisateur_______ (ici votre utilisateur viendra)
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é élargir l'onglet connexions, puis vous serez en mesure d'afficher votre compte.
Maintenant, ouvrez les propriétés de votre compte
aller à userMapping puis 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.
(Pour les services réseau, à savoir les utilisateurs de l'intranet, vous devez configurer les paramètres ci-dessus pour l'AUTORITÉ NT\SYSTÈME de l'utilisateur trop)
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 ce problème et il a été effectivement causé par quelque chose de différent, j'ai eu la 'IIS APPPOOL\ASP.NET v4.0' utilisateur dans ma base de données mais il n'était toujours pas de travail.
J'ai eu récemment mis à jour mon Installation de SQL Server et dans les processus de l'Utilisateur a été déconnecté du Login, il y a donc un 'IIS APPPOOL\ASP.NET v4.0' en vertu de la Base de données -> Sécurité> Utilisateurs, MAIS aucun Utilisateur ne relevant pas de la Sécurité -> Connexions.
Ajouté le Login " IIS APPPOOL\ASP.NET v4.0' à la Sécurité -> Connexions, SQL Server automatiquement associé à l'Utilisateur dans la base de données (cette habitude d'avoir à le faire manuellement) et problème résolu.
J'ai eu ce message et j'utilise l'Authentification Windows sur le serveur web.
Je voulais actuellement authentifié web de l'utilisateur pour être authentifié sur la base de données, plutôt que d'utiliser IIS APPPOOL\ASP.NET v4 Utilisateur spécifié dans l'Application de la Piscine.
J'ai trouvé en entrant la commande suivante dans le web.config fixe, c'est pour moi:
https://msdn.microsoft.com/en-us/library/bsz5788z.aspx
Je vois d'autres Réponses concernant la création du pool d'applications de nom d'utilisateur dans SQL DB ou tout simplement d'utiliser l'Authentification SQL. Les deux serait correct si vous ne voulez pas de les capturer ou de sécuriser les utilisateurs de Windows à l'intérieur de SQL.
Tom
Comme l'a souligné, Ne pas utiliser l'Authentification Windows, Utilisez l'Authentification SQL Server
Aussi, si vous avez créé une connexion à l'aide de "Connexion au Serveur" boîte de dialogue, assurez-vous de vérifier les connexions au web.config. Il est probable que vous avez créé ou modifié de connexion et il a été stocké en tant que connexion de confiance dans le web.config. Simplement utiliser cette authentification
qui devrait corriger l'erreur.
Définissant l'identité ne fait ce travail dans mes pages.
Cassini va de votre site web que votre propre identité de l'utilisateur lorsque vous démarrez l'application Visual Studio. IIS s'exécute votre site web comme une Application de la Piscine de l'Identité. Sauf si l'Application de l'Identité du Pool est accordé l'accès à la Base de données, vous obtenez des erreurs.
IIS introduit Application de l'Identité du Pool d'améliorer la sécurité. Vous pouvez exécuter des sites web sous la valeur par défaut d'Application de la Piscine de l'Identité, ou de Créer un nouveau Pool d'applications avec son propre nom, ou Créer un nouveau Pool d'applications avec son propre nom qui s'exécute sous un Compte d'Utilisateur (généralement Compte de Domaine).
En réseau des situations (qui ne sont pas dans Azure), vous pouvez faire un nouveau Pool d'applications s'exécuter dans un Domaine Active Directory de l'utilisateur de compte, je préfère cela sur le compte d'ordinateur. C'est une sécurité granulaire et granulaire des accès aux ressources du réseau, y compris les bases de données. Chaque site web s'exécute sur un autre Pool d'Application (et chacun de ceux qui s'exécute dans son propre compte d'Utilisateur de Domaine).
Continuer à utiliser la Sécurité Intégrée de Windows dans toutes les Chaînes de Connexion. Dans SQL Server, ajoutez les utilisateurs du Domaine que les connexions et accorder des autorisations à des bases de données, tables, SP, etc. sur un site web de base. E. g. DB1 utilisé par Website1 a une connexion pour User1 parce que Website1 s'exécute sur un Pool d'applications que l'utilisateur User1.
Un défi avec le déploiement de la intégré de Visual Studio DB (par exemple LocalDB) et Serveur Web intégré à un environnement de production provient du fait que le développeur du SID de l'utilisateur et de son Acl ne doivent pas être utilisés dans un cadre sécurisé environnement de production. Microsoft fournit des outils pour le déploiement. Mais pitié le pauvre développeur qui est habitué à tout ce qui vient de travailler hors de la boîte dans la nouvelle facile VS IDE avec localDB et localWebServer, parce que ces outils vont être dur à utiliser pour que développeur, surtout pour un développeur manque de SysAdmin et DBAdmin de soutien ou de leurs connaissances spécialisées. Néanmoins, le déploiement d'Azur est plus facile que le réseau de l'entreprise la situation mentionnée ci-dessus.
Si vous avez votre chaîne de connexion ajoutée à votre site web.config, assurez-vous que "Integrated Security=false;" de sorte qu'il serait d'utiliser l'identifiant et le mot de passe spécifiés dans le web.config.
Un autre moyen de l'octroi de l'autorisation à la base de données pour l'utilisateur
IIS APPPOOL\ASP.NET v4.0
est comme suit.IIS APPPOOL\ASP.NET
avec votre schéma par défaut.v4.0
Pensé que je poste comme une réponse qu'elle est pertinente pour la question et la réponse dans certains cas.
Le même message s'affiche également si la base de données n'existe pas!
Assurez-vous que votre chaîne de connexion n'a pas de fautes d'orthographe, est orientée vers la droite de l'instance de serveur, etc.
Avez-vous fait ce que
@Teddy
recommandé et vous ENCORE obtenir la même erreur?Assurez-vous de modifier les paramètres de l'application de la piscine qui correspond à votre répertoire virtuel et non pas le serveur parent. Chaque répertoire virtuel a son propre pool d'applications et de ne pas hériter.
Dans DefaultAppPool ensemble NetworkService dans la propriété d'Identité et Sql Server ajouter un Utilisateur du Réseau de Service et de lui donner les autorisations appropriées à votre base de données, c'est très bien pour moi, je l'ai testé en local, mais je pense que c'est la meilleure configuration pour se connecter à partir de n'importe quel autre ordinateur dans le réseau. lorsque vous définissez LocalSystem dans l'Identité dans IIS qui fonctionnent bien et il n'est pas nécessaire de créer un autre utilisateur dans Sql Server, mais je pense que cela va pas travailler dans un environnement réseau.
J'ai rencontré le même problème de test ASP.NET l'API Web
Web Développé.Hôte dans Visual Studio 2013 Express
Base de données dans SQL Server 2012 Express
Exécuté de test à l'aide intégrée dans IIS Express (de travail)
Modifié pour utiliser IIS Local (à partir des propriétés de la page web en option)
A couru à tester avec un violon
Reçu d'erreur - impossible d'ouvrir la base de données de fournisseur....
citant 'APPPOOL\DefaultAppPool"
Solution qui a fonctionné.
Dans IIS
Cliquez sur le pool d'applications "DefaultAppPool"
Set Identifier = 'ApplicationPoolIdentity'
Ensemble .NET framework = v4.0 (même si mon application était de 4,5)
Dans SQL Server Management Studio
Clic droit sur le dossier de Sécurité (sous le moteur SQL Server, donc s'applique à toutes les tables)
Clic droit sur l'Utilisateur et d'ajouter "IIS APPPOOL\DefaultAppPool"
Dans sécurisables sur la "Subvention" de la colonne de vérifier les options que vous souhaitez donner.
Sur ce qui précède, si vous êtes un administrateur de base vous le savez sans doute et que vous souhaitez contrôler
ce que ces options sont. Si vous êtes comme moi, un développeur voulais juste tester
votre API WEB service qui se trouve également accéder à SQL Server par le biais d'EF 6
dans la logique MVC ensuite, il suffit de cocher tout. 🙂 Oui, je sais, mais cela a fonctionné.
Dans le cas où vous ajoutez une nouvelle connexion, assurez-vous que sous propriétés du serveur ( clic droit -> propriétés)/sécurité, le mode d'authentification est définie à la fois sql server et windows, pas uniquement windows.
Ajouter "tout le monde" en vertu de sécurité. Si vous avez ajouté le Serveur et les utilisateurs qui se connectent à la base de données, alors c'est quelque chose que vous êtes absent.
Espérons que cette aide.
Pour l'enregistrement, si vous rencontrez cette erreur après le passage de l'
LocalDB
àSQLEXPRESS
, assurez-vous que la base de données déjà esists dansSQLEXPRESS
. Vous pouvez le vérifier dans Management Studio.J'ai eu le même problème lors de l'utilisation de
Entity Framework
après le passage àSQLEXPRESS from LocalDB
. J'ai dû courirUpdate-Database
de commande. J'ai été en mesure de se connecter avec succès par la suite.J'ai fait exactement comme @JeffOgata dit, mais j'ai obtenu l'erreur:
J'ai regardé mon message d'erreur et il a dit
Login failed for user 'IIS APPPOOL\DefaultAppPool'.
Après l'ajout d'un utilisateur nommé
IIS APPPOOL\DefaultAppPool
tout a fonctionné.J'ai utilisé le générateur de profils SQL Server (disponible dans SSMS => menu Outils) et vu là (quand IIS ont tenté de se connecter à la base de données) que mon IIS utilisateur a été pour quelque raison NT AUTHORITY\IUSR, pas question de toutes les mesures recommandées dans les réponses à cette question. J'ai donc ajouté que l'utilisateur de SQL Server, et cela a fonctionné...
Dans Asp.net webform,
cette correction d'une erreur lors de l'installation asp.net de:
Le Gestionnaire de serveur > Gérer > Ajouter le Rôle et la Fonction > les Rôles de Serveur > Serveur Web (IIS) > Serveur Web > le Développement de l'Application > ASP.NET 3.5/4.6 est installé.
mon problème résolu.
Vous pouvez faire face à ce mal dans la base de données spécifique qui est créé après la SSMS mise à jour. Ouvrir SSMS et sélectionnez vos bases de données et ouvrez votre base de données, puis cliquez sur de Sécurité--> Utilisateurs-->, et cliquez du bouton droit sur Utilisateurs, puis cliquez de nouveau sur "New User" et ajouter 'NT\Utilisateurs et enregistrez-vous de travailler et d'aller à votre Forme sur le Web/Desktop que voulez-vous. Profitez d'....
J'Ai le même problème je l'ai résolu en changeant
Integrated Security=True
à fauxmaintenant son travail
Important de permettre "sysadmin" dans les Rôles de Serveur
quelque chose de semblable s'est passé pour moi ce qui a fonctionné pour moi a été la modification de la propriété Integrated Security = True pour Integrated Security = false dans le web.config du site
J'ai été confronté au même problème alors que l'hôte de l'application dans IIS
Solution
- Je changer l'Identité du Pool et son travail m'