2010-08-01 3 views
2

Un projet WCF consiste en toute la logique derrière une application de bureau (WPF) et il fonctionne bien lorsque je l'exécute sur VS 2008 avec WCF selfhost. L'application de bureau utilise les services exposés par le WCF et les utilisateurs d'applications de bureau doivent se connecter à l'application à l'aide de son nom d'utilisateur et de son mot de passe. WCF se connecte à la base de données SQL Server 2008 via LINQ et les détails du compte utilisateur sont également enregistrés dans cette base de données.N'a pas reconnu la bonne base de données après l'hôte de projet WCF dans IIS 7

Mais après avoir hébergé ce WCF dans IIS 7, lorsque je me connecte à l'application de bureau, il dit que le nom d'utilisateur et le mot de passe ne correspondent pas. Mais cela a fonctionné parfaitement dans VS 2008 avec auto-hôte avant d'héberger WCF dans IIS 7. Quelle est la raison de ce comportement?

S'il vous plaît me aider à résoudre ce problème

chaîne de connexion pour la base de données SQL Server:

<add name="iSponsor.Data.Properties.Settings.test_dbConnectionString" 
    connectionString="Data Source=LMR-HERO\SQLSP1INS;Initial Catalog=test_db;Integrated Security=True" 
    providerName="System.Data.SqlClient" /> 
+1

montrez-nous comment vous vous connectez à SQL Server à partir de votre service WCF !! Quelle chaîne de connexion utilisez-vous? –

+0

Répondre

1

Vous utilisez la sécurité intégrée. Cela signifie que le service WCF tentera de se connecter à la base de données à l'aide de l'identité du pool d'applications IIS.

Vous aurez soit besoin de

  1. accorder les utilisateurs de la piscine de l'application par défaut (ou plus commodément le groupe local IIS_IUSRS) des autorisations pour accéder à votre base de données - besoins soigneusement accès verrouillé, cependant, mais très difficile pour un attaquant d'usurper l'identité d'cet utilisateur
  2. exécuter le pool d'applications en tant qu'utilisateur local ou d'un domaine qui a accès à la base de données - à nouveau besoin de verrouiller soigneusement vers le bas cet utilisateur
  3. utiliser l'authentification du serveur SQL au lieu (nom d'utilisateur/mot de passe) - la plus simple à mis en place mais plus facile d'attaquer
+0

+1 bien dit - toutes les infos nécessaires sont là! :-) –

+0

oui! ça a marché. Je suis la première approche que Rup a dit et je viens d'ajouter un nouvel utilisateur pour la connexion au serveur sql appelé 'IIS APPPOOL \ DefaultAppPool'. Ensuite, je donne la permission pertinente à cet utilisateur. thx pour le support. –

Questions connexes