>Salve, ho creato un web service che per un metodo restituisce
>un System.Xml.XmlDocument
c'è un motivo particolare per cui usi di ritorno un XmlDocument?
Io ti consiglierei di ragionare in termine di oggetti e far tornare al tuo WebService una collection (array) di questi oggetti, i quali oggetti hanno delle proprietà che ti interessano.
Tecnicamente un webservice parla già in Xml (anzi più precisamente in SOAP) e quindi tutti vengono poi serializzati in questo formato (serializzazione), solo che lato client vengono utilizzati tramite oggetti (deserializzazione), quindi puoi accedere ai valori delle sue proprietà.
Tutto questo processo è trasparente a te come developer, si arrangia il motore del framework in automatico...è una cosa molto comoda e sinceramente puoi pensare ad avere la complessità che vuoi sulle varie proprietà, ad esempio nel tuo caso proprio un byte[] che sia effettivamente l'immagine letta dal disco.
Quindi morale della favola,tradotto in codice C# io farei qualcosa di questo tipo:
public class MioOggetto
{
public int ID { get; set; }
public string Testo { get; set; }
public byte[] Immagine { get; set; }
...etc...
}
nel webservice usi un metodo che te ne torna uno o più:
[WebMethod]
public MioOggetto[] GetOggetti()
{
List<MioOggetto> lista = new List<MioOggetto>();
...
MioOggetto o = new MioOggetto();
o.ID = 1;
o.Testo = "...";
o.Immagine = File.ReadAllBytes("c:...immagine.jpg");
...
lista.Add(o);
return lista.ToArray();
}
Lato client, quando referenzi il webservice, lui scopre che un suo metodo torna oggetti di tipo "MioOggetto" e quindi sa come recuperarli e gestirli dandoti già l'intellisense corretto, senza che tu debba fare niente (a parte chiaramente referenziarlo).
Avrai quindi disponibile l'immagine direttamente come byte[], e quindi ti basta portarla in un oggetto Bitmap o Image del Namespace System.Drawing con i metodi relativi e puoi farci quello che vuoi...
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo