Passer un type Stream comme paramère dans un Service Web [Résolu]

Signaler
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013
-
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013
-
Bonjour tout le monde,

j'ai un Service Web A dans lequel j'ai une méthode "put" qui a les paramètres suivants:

put(Stream param1, string param2, string param2)

J'ai un autre Service Web B qui fait référence au Service Web A et dans lequel j'utilise la méthdoe put(....). dans laquelle je passe les paramètres suivants:
----------
System.IO.

FileStream file =
new System.IO.
FileStream(
@"C:\test.xml",
FileMode.Open,
FileAccess.Read);

XmlNode

res = A.put(file,"","");
---------

Lorsque je compile, j'ai les erreurs suivantes qui apparaît:

Erreur 1 La méthode surchargée correspondant le mieux à 'refA.A.put(refA.FileStream, string, strig)' possède des arguments non valides...
Erreur 2 Argument '1' : impossible de convertir de 'System.IO.FileStream' en 'refA.FileStream'...

Est-ce que quelqu'un sait comment je peux faire que FileStrem de la méthode put du Service Web A, soit consiféré comme un System.IO.FileStream et non comme refA.FileStream?

Par avance merci pour votre aide!

Cédric

7 réponses

Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Salut TheSaib,

oui je n'ai plus de message d'erreur, lorsque j'ajouter le paramètre <httpRuntime maxRequestLength=9000></httpRuntime>

Je te remercie beaucoup pour ton aide!

Cédric
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Passe un table de byte[] pour envoyer un fichier par webservice.

Un binaryReader sur ton filestream te renverra un tableau de byte ensuite dans ton webservice tu utilise un memorystream qui remplira ton FileStream.

::|The S@ib|::
MVP C#.NET
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Salut TheSaib,

J'ai suivi ton conseil et j'ai écris ceci dans mon code:

FileStream st = File.OpenRead(@"C:\test.xml");
byte[] stByte = new byte[st.Length];
st.Read(stByte, 0, int.Parse(st.Length.ToString()));


XmlNode res = A.put(stByte,"","");

Le problème est que j'ai le message d'erreur suivant qui apparaît:

System.Web.Services.Protocols.SoapException: Une exception s'est produite lors de l'exécution des extensions spécifiées dans le fichier de configuration. ---> System.Web.HttpException: Longueur maximale de la demande dépassée. à System.Web.HttpRequest.GetEntireRawContent() à System.Web.HttpRequest.get_InputStream() à System.Web.Services.Protocols.SoapServerProtocol.Initialize() --- Fin de la trace de la pile d'exception interne --- à System.Web.Services.Protocols.SoapServerProtocol.Initialize() à System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Cela signifie que mon fichier XML est trop grand, est-ce que tu saurais comment on peut déclarer un paramètre Stream de type System.IO dans une méthode d'un Service Web?

Par avance, je te remercie pour ton aide!

Cédric
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
Celà n'a pas de sens de passer un stream dans un webservice.

Pour passer des data plus grandes tu peux soit augmenter le maxRequestLength dans ton web.config :
<httpRuntime>maxRequestLength ="8192"</httpRuntime>

Soit utiliser WSE 3.0 :

http://msdn2.microsoft.com/en-us/library/aa528818.aspx

::|The S@ib|::
MVP C#.NET
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
So ?

::|The S@ib|::
MVP C#.NET
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
23 décembre 2013

Salut TheSaib,

Désolé, mais j'ai quelques autres problème urgents ces derniers jours, mais j'espère ou demain au plus tard, que j'aurai du temps pour tester ton conseil.
Dans tous les cas, je te redonnerai des nouvelles,..

A+

Cédric
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
15
No problème, c'est simplement pour pouvoir clôturer les threads, afin que ceux qui cherchent la même info sachent que le problème à été résolu.

::|The S@ib|::
MVP C#.NET