locked
Deploiement des Webservices sur iis RRS feed

  • Question

  • Bonjour,

    J'ai réalisé une application Silverlight comprenant des Webservices mais alors que les webservices  communiquent bien avec la base sqlserver implémentée sur la machine (hors de iis) depuis des serveurs virtuels (exemple localhost:53006 ) je n'arrive pas à les faire fonctionner avec la base de données lorsqu'ils sont déployés sur IIS.

    La chaine de connection est correcte pourtant, mais iis semble refusé l'accés à la base.

    Comment autorisé le wabservice sur iis à lire et écrire les données dans la base sqlserver.

    D'avance merci

    P.S.


    ps


    • Modifié SEVRY1444 mercredi 29 juillet 2015 09:00
    mercredi 29 juillet 2015 08:59

Réponses

  • Bonjour,

    Il est probable que vous soyez en authentification intégré sur votre chaîne de connexion. Quand vous lancez en mode debug, votre programme tourne sur votre compte, lequel a accès à la base.

    En revanche, IIS fait fonctionner votre site sous le compte ApplicationPoolIdentity par défaut. C'est un compte built-in qui fait l'astuce suivante : il créé en local sur votre machine un compte dont le nom est :

    "IIS AppPool\<NomDuSite>_Pool"

    Vous avez, s'il s'agit bien de ce problème, plusieurs options.

    1- Arrêtez l'authentification intégrée et créer un vrai compte dans SQL Server. Vous pourrez ensuite configurer la chaîne de connexion avec les informations adéquates (si vous avez peur que le mot de passe apparaisse en clair, vous avez la possibilité de le crypter)

    2- Donner accès dans SQL Serverau compte IIS AppPool\<NomDuSite>_Pool (attention, si vous cherchez ce compte sur votre machine et faîtes partie d'un domaine, Windows vous propose par défaut la recherche dans le domaine, or ce compte n'en fera pas parti. Il faudra indiquer le nom de votre machine)

    3- Créer un compte de service Windows et faîtes tourner le pool de votre application sous ce compte. Il vous faut également donner les droits à ce compte dans SQL Server.

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    • Marqué comme réponse SEVRY1444 jeudi 6 août 2015 14:43
    mercredi 5 août 2015 10:03

Toutes les réponses

  • Bonjour,

    POur être sur :

    Vous avez une application Silverlight qui consomme des WebServices hébergés sur un site Web.

    Quand vous déployez votre site sur un serveur IIS, votre application n'arrive plus à communiquer avec les WebServices.

    Il faut pour cela déclarer l'autorisation de consommation des WebServices.

    Pour cela, il faut ajouter un fichier clientaccesspolicy.xml et le configurer correctement.

    https://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx?f=255&MSPPError=-2147217396


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 30 juillet 2015 14:32
  • Bonjour,

    Merci pour votre réponse.

    J'ai bien clientaccesspolicy.xml et crossdomain.xml dans la racine du site mais cela ne change rien pas d'accès à la base de donnée sqlserver depuis iis.

    Par contre les webservices fonctionnent correctement à partir d'un répertoire virtuel: localhost:56043.

    Je ne vois pas pourquoi Iis n'arrive pas à communiquer avec la base de donnée Sqlserver dont le fichier bd.dbf  se trouve dans c://Programmes/Microsoft SQL Server/...Etc  .

    IIS en parrallele comprend plusieurs sites Silverlight fonctionnant normalement ( tels christellecoiffure86.fr) avec base de données access (*.mdb) implémentée cette fois dans un repertoire   /data sous la racine du site.

    D'avance merci

    P.S.


    ps

    vendredi 31 juillet 2015 14:40
  • C'est quoi votre connectionString ?

    La base est bien attachée à votre server SQL ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    vendredi 31 juillet 2015 14:45
  • Bonjour.

    La dernière fois que j'ai eu problème d'accès à ma base sql depuis le webservice, c'était lié au compte 'exécution du pool d'application de mon site. Essais de défini un compte d'exécution du pool d'application (le compte doit avoir accès au server de base de donnée).

    samedi 1 août 2015 17:37
  • Bonjour,

    C'est peut être SQL Server qui refuse la connexion et non pas IIS, le compte SQL Server utilisé pour la connexion n'a pas les autorisations nécessaires pour une connexion extérieure. Il faut faire un try catch sur le connect et voir le message d'erreur, ce qui pourrait vous donner un ordre d'idée du problème.


    Cordialement

    mardi 4 août 2015 11:49
  • Bonjour,

    Il est probable que vous soyez en authentification intégré sur votre chaîne de connexion. Quand vous lancez en mode debug, votre programme tourne sur votre compte, lequel a accès à la base.

    En revanche, IIS fait fonctionner votre site sous le compte ApplicationPoolIdentity par défaut. C'est un compte built-in qui fait l'astuce suivante : il créé en local sur votre machine un compte dont le nom est :

    "IIS AppPool\<NomDuSite>_Pool"

    Vous avez, s'il s'agit bien de ce problème, plusieurs options.

    1- Arrêtez l'authentification intégrée et créer un vrai compte dans SQL Server. Vous pourrez ensuite configurer la chaîne de connexion avec les informations adéquates (si vous avez peur que le mot de passe apparaisse en clair, vous avez la possibilité de le crypter)

    2- Donner accès dans SQL Serverau compte IIS AppPool\<NomDuSite>_Pool (attention, si vous cherchez ce compte sur votre machine et faîtes partie d'un domaine, Windows vous propose par défaut la recherche dans le domaine, or ce compte n'en fera pas parti. Il faudra indiquer le nom de votre machine)

    3- Créer un compte de service Windows et faîtes tourner le pool de votre application sous ce compte. Il vous faut également donner les droits à ce compte dans SQL Server.

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    • Marqué comme réponse SEVRY1444 jeudi 6 août 2015 14:43
    mercredi 5 août 2015 10:03