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

Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Dernière intervention
23 décembre 2013
- - Dernière réponse : Verrisan
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Dernière intervention
23 décembre 2013
- 13 nov. 2007 à 07:54
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Dernière intervention
23 décembre 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Verrisan
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
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
Commenter la réponse de TheSaib
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Dernière intervention
23 décembre 2013
0
Merci
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
Commenter la réponse de Verrisan
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
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
Commenter la réponse de TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
So ?

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib
Messages postés
59
Date d'inscription
mardi 21 novembre 2000
Dernière intervention
23 décembre 2013
0
Merci
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
Commenter la réponse de Verrisan
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
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
Commenter la réponse de TheSaib

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.