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 :

Transfert de fichiers zip via WCF


Sujet :

Services Web

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 43
    Points : 33
    Points
    33
    Par défaut Transfert de fichiers zip via WCF
    Bonjour à tous,

    J'ai mis en place un service WCF qui me permet d'interroger une base de données SqlServer.

    Dans ma base de données, j'ai enregistré des fichiers ZIP, à l'aide de la fonctionnalité FILESTREAM de SQL server 2008.

    Je n'ai aucun problème pour récupérer mon fichier ZIP avec mon service Web.
    Cependant je n'arrive pas à le transmettre au client. J'ai essayé plusieures types de données (byte[], Stream,....) mais sans résultat.

    Voila mon opération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [OperationContract]
    bool ProjetObtenirModele(string sCheminDestination, out byte[] byFichier);
    Ma liaison côté serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <basicHttpBinding>
            <binding name="BasicHttpEndpointBinding" closeTimeout="00:25:00"
              openTimeout="00:25:00" receiveTimeout="00:25:00" sendTimeout="00:25:00"
              maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
              messageEncoding="Text" transferMode="Buffered">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
              <security mode="None" />
            </binding>
          </basicHttpBinding>
    Ma configuration coté client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="NewBinding0" closeTimeout="00:25:00" openTimeout="00:25:00"
                        receiveTimeout="00:25:00" sendTimeout="00:25:00" maxBufferSize="2147483647"
                        maxReceivedMessageSize="2147483647" messageEncoding="Text"
                        transferMode="Buffered">
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:49821/SERVICE_MICE.svc" binding="basicHttpBinding"
                    bindingConfiguration="NewBinding0" contract="ISERVICE_MICE"
                    name="basicHttpBinding" />
            </client>
        </system.serviceModel>
    </configuration>
    Si je ne modifie pas la propriété maxArrayLength, j'obtien un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Erreur lors de la désérialisation du corps du message de réponse pour l'opération 'ProjetObtenirModele'. Dépassement du quota maximal pour la longueur de tableau (16384) lors de la lecture des données XML. Ce quota peut être augmenté en modifiant la propriété MaxArrayLength sur l'objet XmlDictionaryReaderQuotas utilisé lors de la création du lecteur XML. Ligne 1, position 9652284.
     
    Server stack trace: 
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeReply(Message message, Object[] parameters)
       à System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
       à System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
       à 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)
       à ISERVICE_MICE.ProjetObtenirModele(Byte[]& byFichier, String sCheminDestination)
       à SERVICE_MICEClient.ProjetObtenirModele(Byte[]& byFichier, String sCheminDestination)
     
    Inner Exception:
    Dépassement du quota maximal pour la longueur de tableau (16384) lors de la lecture des données XML. Ce quota peut être augmenté en modifiant la propriété MaxArrayLength sur l'objet XmlDictionaryReaderQuotas utilisé lors de la création du lecteur XML. Ligne 1, position 9652284.
       à System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
       à System.Xml.XmlExceptionHelper.ThrowMaxArrayLengthExceeded(XmlDictionaryReader reader, Int32 maxArrayLength)
       à System.Xml.XmlBaseReader.ReadContentAsBase64()
       à System.Xml.XmlDictionaryReader.ReadElementContentAsBase64()
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.PartInfo.ReadValue(XmlDictionaryReader reader)
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeParameter(XmlDictionaryReader reader, PartInfo part)
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters)
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeResponse(XmlDictionaryReader reader, Object[] parameters)
       à System.ServiceModel.Dispatcher.PrimitiveOperationFormatter.DeserializeReply(Message message, Object[] parameters)
    Après avoir mis la propriété maxArrayLength="2147483647", le service web est long à répondre quand j'appel cette opération, puis j'obtien une exception àprès quelques minutes de "patinage":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Une exception non gérée du type 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll
     
    Informations supplémentaires*: Une exception a été levée par la cible d'un appel.
    Si quelqu'un à une expérience dans le transfert des gros fichiers (20Mo) par un service Web....

    Merci d'avance,
    Antoine

  2. #2
    Membre régulier
    Homme Profil pro
    Developpeur
    Inscrit en
    Décembre 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 111
    Points : 79
    Points
    79
    Par défaut Envoi des fichiers sous WCF
    Salut je pense que pour ton problème tu dois utiliser le WS-Reliable Messaging pour envoyer les données paquets par paquets

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2014, 13h51
  2. sh : Problème de récupération fichiers ZIP via FTP
    Par benthebest dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/11/2014, 17h56
  3. Réponses: 1
    Dernier message: 01/09/2013, 12h52
  4. Décompression fichier .zip via le cloud
    Par Florian.L dans le forum Microsoft Azure
    Réponses: 1
    Dernier message: 07/11/2011, 08h14
  5. Transferts de fichiers FTP via tunnel SSH
    Par Jiraiya42 dans le forum Réseau
    Réponses: 9
    Dernier message: 30/05/2006, 14h11

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