J'ai un projet web (C# Asp.Net, EF 4, MS SQL 2008 et IIS 7) et j'ai besoin de le migrer vers IIS 7 localement (pour le moment, il fonctionne bien avec CASSINI).
Localement, dans IIS, j'ai mon Default Web Site
avec mon déploiement. Mon déploiement et Default Web Site
sont sur le pool ASP.NET v4.0 (regardez l'image pour les paramètres) le pool cible Framework 4 comme mon projet web. Lors de la visite du site, le navigateur ne montre pas la page et permet au navigateur de télécharger la page à la place.
J'ai d'autres projets qui tournent sur IIS localement et qui fonctionnent sans problème (mais ils n'utilisent pas Entity Framework).
En utilisant le journal des é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 lire dans les ressources sur cette question que les permissions doivent être accordées sur MS SQL 2008 manuellement comme arift l'explique dans sa réponse. En utilisant IIS 7.5 et MS SQL 2008 R2, il ne devrait pas être nécessaire de définir manuellement les autorisations.
2 votes
Avez-vous autorisé l'identité du pool d'applications sur le dossier du site web ?
0 votes
Je ne suis pas sûr, pourriez-vous me dire comment faire ?
1 votes
learn.iis.net/page.aspx/624/application-pool-identities
0 votes
En fait, comme le dit l'adrift, cela pourrait être un problème de sécurité sql. Il est préférable de définir un compte d'utilisateur NT pour l'AppPool, puis d'accorder cette permission au dossier du site Web et aux tables appropriées dans SQL.
0 votes
Merci Christina, j'ai suivi votre ressource et tout est en place pour IIS et le dossier semble comme décrit, mais j'ai toujours le même problème :-(
1 votes
@GibboK : Je vous encourage à revoir la réponse acceptée ici et à choisir une réponse plus appropriée. La réponse acceptée conduit de nombreuses personnes dans un trou noir de sécurité. Oui, cela fonctionne. Non, ce n'est vraiment pas une bonne idée. Voir mes commentaires ci-dessous.
0 votes
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, donc le problème de sécurité n'était pas vraiment une préoccupation.
0 votes
IIS local, pas express. a pu réparer en ajoutant le compte signalé dans l'erreur signalée à sql server. Dans mon cas, c'était : IIS APPPOOL \DefaultAppPool ceci est pour l'environnement de développement local -- vs 2017
0 votes
GAAAHH ! J'ai passé environ 4 heures à essayer de comprendre, quand j'ai finalement réalisé que ma chaîne de connexion pointait vers localhost mais que la base de données était sur localhost. \SQLEXPRESS ! ! Un message d'erreur "base de données non trouvée" serait bien, Microsoft !