OK, habe es doch selbst hinbekommen, nachdem ich aufgehört habe, mit Streams herumzuprobieren:
Die Service-Prozedur sieht einfach so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| [WebMethod] public byte[] GetFile(string filename) { if (File.Exists(filename)) { FileStream stream = new FileStream(filename, FileMode.Open); byte[] result = new byte[(int) stream.Length]; stream.Read(result, 0, (int) stream.Length); return result; } return null; } |
In der WinApp referenziert man dann einfach den WebService und holt sich die Datei mit folgendem Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void button1_Click(object sender, EventArgs e) { localhost.Service1 service = new WindowsApplication1.localhost.Service1(); FileStream stream = new FileStream(textBox2.Text, FileMode.CreateNew); byte[] data = service.GetFile(textBox1.Text); stream.Write(data, 0, data.Length); stream.Close(); } |
Ist zwar noch nicht perfekt (Statusbalken sollte noch hinzugefügt werden), aber funktioniert grundsätzlich mal.