IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Problème web service : pertes de données


Sujet :

Services Web

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut Problème web service : pertes de données
    Bonjour,

    Je travaille actuellement sur un projet Silverlight 4 consommant un web service que j'ai développé et qui est hébergé sur un serveur IIS 7.

    J'ai effectué 2 scénarios de tests :
    - le premier en incluant le service comme projet en référence de mon projet de test ;
    - le second en développant un petit client qui consomme le service.

    Mon problème vient du fait qu'en consommant le service (donc lors du second scénario de test) je perds touts les données d'un objet qu'on appellera Container, contenant des informations sur une image quelconque (même si pour mes tests j'utilise une image au format JPG).
    La structure du Container ne concerne que les types string, int, double, bool, char ansi que des tableaux de ces derniers types.

    Donc en gros, j'ai un objet Container rempli à la sortie de ma méthode en utilisation "directe" (projet de test référençant le service directement), et un objet Container vide à la sortie de ma méthode en consomment le web service hébergé sur IIS.

    J'ai même eu un autre problème, àa la sortie de ma méthode en consommant le web service, j'ai eu l'excpetion suivante : [CommunicationException] "Le serveur n'a pas retourné la réponse attendue.".

    N'hésitez pas à me demander d'autres renseignements qui pourraient vous être utiles.

    Merci d'avance à tous pour vos lumières.

  2. #2
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Par défaut
    Salut

    Je suis pas très calé en web service mais il me semble que ton objet 'container' doit etre serializable si tu veux le consommer à travers un web service.

    Ce que tu peux tester aussi c'est de faire en sorte que ta web method retourne un dataset plutot qu'un objet de type 'container' juste pour voir si ca te retourne qqchose.

    J'espère avoir pu t'aider un peu !
    @++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Salut Bal1n,

    Tout d'abord merci d'avoir consacré du temps à mon sujet.

    Ensuite, mon "container" est un objet que j'ai moi-même développé, il n'a aucun lien avec quelconque concept de C#, c'est juste un vocabulaire que j'ai employé, probablement à mauvais escient.

    De plus, il s'agit d'un objet exposé au service, c'est-à-dire que mon objet est annoté par l'attribut DataContract, ce qui en fait forcément un objet sérializable.
    Les champs auxquels je veux accéder (et qui sont vides justement) sont annotés quant à eux par l'attribut DataMember, ils sont donc eux aussi sérializable.

    Je pense donc que nous pouvons laisser de côté la sérialization.

    J'aimerais toutefois rajouter une information.
    C'est du côté de mon service que je rempli mon "container". Pour arriver à cela je fais appel à une librairie pour ouvrir mes images. Je ne pense pas que les classes auxquelles je fais appelles et qui appartiennent à la librairie que j'utilise doivent être sérializables, puisqu'elles n'ont aucuns lien avec mon client consommant le service.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Je viens ajouter une information à mon topic :je vous parlais dans mon premier post d'une exception de type CommunicationException.
    Le message d'erreur exact est le suivant :
    Le serveur n'a pas fourni de réponse pertinente*; ceci peut être causé par des contrats qui ne correspondent pas, un arrêt prématuré de la session ou une erreur interne du serveur.
    Et voici la StackTrace fournit :

    Server stack trace:
    à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

    Exception rethrown at [0]:
    à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    à WebServiceModelConsummer.MyService.IService1.GetImage(String objectID, Int32 index)
    à WebServiceModelConsummer.MyService.Service1Client.GetImage(String objectID, Int32 index) dans C:\Documents and Settings\JuicyLink\Mes documents\Visual Studio 2010\Projects\WebServiceModelConsummer\WebServiceModelConsummer\Service References\MyService\Reference.cs:ligne 3713
    à WebServiceModelConsummer.TestsConsoleMyService.GetImage(MyObject object) dans C:\Documents and Settings\JuicyLink\Mes documents\Visual Studio 2010\Projects\WebServiceModelConsummer\WebServiceModelConsummer\Form1.cs:ligne 666
    à WebServiceModelConsummer.TestsConsoleMyService.btnGetImage_Click(Object sender, EventArgs e) dans C:\Documents and Settings\JuicyLink\Mes documents\Visual Studio 2010\Projects\WebServiceModelConsummer\WebServiceModelConsummer\Form1.cs:ligne 855
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.Run(Form mainForm)
    à WebServiceModelConsummer.Program.Main() dans C:\Documents and Settings\JuicyLink\Mes documents\Visual Studio 2010\Projects\WebServiceModelConsummer\WebServiceModelConsummer\Program.cs:ligne 18
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    En espérant que ça pourra nous aider à résoudre mon problème.

    Merci.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Je viens vous tenir au courant de l'avancement de mon travail pour la résolution de mon problème.

    J'ai aujourd'hui bien ciblé la cause du problème : dans mon objet "container" j'ai des tableaux de type byte, short et ushort, je les ai respectivement appelés ByteBuffer, ShortBuffer et UshortBuffer.
    C'est au moins un de ces 3 champs de mon objet qui pose problème puisqu'en leur attribuant la valeur null, tout se déroule correctement.

    La question à ce jour est : y aurait-il un problème connu avec les tableaux de type byte, short et ushort stockés dans un objet exposé (ces champs aussi étant exposés) et levant une exception de type CommunicationException ?

    Je vais poursuivre mes recherches à ce niveau pour savoir si ce sont ces 3 champs qui posent problème ou l'un d'entre eux seulement (voir 2 possiblement).
    Également je testerai l'exposition de ces champs au service, afin de savoir si justement l'exposition qui pose problème ou non.

    Je tiendrai état de mon avancement dans le courant de l'après-midi.

    Merci.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Pas de réponse toujours, mais je continue de chercher de mon côté...

    Donc ce sont définitivement mes buffers qui ne passent pas.

    Quand je force à null mes buffers, tout fonctionne correctement, si au moins un des buffers est rempli, peu importe le type du buffer s'il est Byte[], Short[] ou Ushort[].

Discussions similaires

  1. Web service - transfert de données c#
    Par mhemond dans le forum Services Web
    Réponses: 0
    Dernier message: 27/11/2008, 17h38
  2. problème Web Services
    Par jguyard dans le forum Flex
    Réponses: 0
    Dernier message: 16/01/2008, 17h19
  3. [Web Service][SOAP] Problème Web Service
    Par goddet dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2007, 10h12
  4. Problème Web service : C# - IIS 6.0 - windows server 2003
    Par identifiant_bidon dans le forum Services Web
    Réponses: 3
    Dernier message: 20/04/2007, 16h33
  5. [Kylix] problème web service kylix
    Par RezzA dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo