
A mellékelt példa megnyitása előtt hozzon létre egy UploadFile nevű webes megosztású könyvtárat! (Intézőben jobb gomb az UploadFile mappán, Tulajdonságok menüpont, majd a Webmegosztás lapon engedélyezzük a megosztást.)
A futtatásához szükségessé válhat az alapértelmezésben a C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CONFIG könyvtárban lévő machine.config állományban a processModel bejegyzésnél a userName attribútum system értékre történő változtatása. Ezek után indítsuk újra a gépet. A system felhasználóval futtatva a rendszerünket, magasabb privilégiumokat kap alkalmazásunk, míg a machine user esetén az ASPNET felhasználóval történik a futtatás, mely alacsonyabb jogokkal rendelkezik.
A web szerviz elkészítése
Készítünk egy UploadFile nevű függvényt, mely két paramétert vár. Az elsőben kell megadnunk egy állomány nevet és elérési útvonalat. A web szervizt futtató gépen ez az állomány kerül létrehozásra és így ide kerül a feltöltött állomány. A második paraméterben egy bájtokat tartalmazó tömböt adunk át, melyben az állomány bájtjai kapnak helyet.
[WebMethod]
public string UploadFile(string filename, byte[] file)
{
A kapott tömböt egy memória stream-re mentjük, majd létrehozzuk a fizikai állományt.
MemoryStream ms = new MemoryStream(file);
FileStream fs = new FileStream(filename, FileMode.Create);
A létrejött új állományba pedig egyszerűen beleírjuk a memória stream tartalmát.
ms.WriteTo(fs);
ms.Close();
fs.Close();
return "Az állomány feltöltése sikeres volt!";
...
A teszt alkalmazás elkészítése
A Web Service elkészülte után fordítsuk le azt, majd hozzunk létre egy Windows-os alkalmazást. Szükségünk lesz egy proxy osztályra, melyen keresztül a Web Service-t könnyedén elérhetjük. Ehhez a WSDL.EXE parancssori alkalmazás segít bennünket. Ha kiadjuk az alábbi utasítást, akkor létrejön egy Service1.cs forráskód, melyben adott lesz a Web Service eléréséhez szükséges objektum.
wsdl http://localhost/UploadFile/Service1.asmx?wsdl
A localhost helyett természetesen más is állhat attól függően, hogy a Web Service hol lett publikálva. A WSDL könnyebb eléréséhez használjuk a Visual Studio.NET Command Prompt-ot.
Ezek után egy állomány feltöltése a web szervizen keresztül a következőképpen zajlik: megnyitunk egy állományt a FileStream osztállyal és beolvassuk azt egy bájtokat tartalmazó tömbbe.
private void button1_Click(object sender, System.EventArgs e)
{
FileStream fs = File.Open("c:\\autoexec.bat", FileMode.Open, FileAccess.Read);
byte[] b = new byte[fs.Length];
fs.Read(b, 0, Convert.ToInt32(fs.Length));
Létrehozunk egy új példányt a web szervizből és az UploadFile függvényt meghívva átadjuk a bájtokat tartalmazó tömböt.
Service1 s = new Service1();
label1.Text = s.UploadFile("c:\\_autoexec.bat", b);
fs.Close();
}

A teszt alkalmazás futtatása előtt ellenőrizze, hogy a C: meghajtón van-e autoexec.bat állomány. Ha nincs, akkor változtassa meg a forráskódot egy tetszőleges létező állományra.
A példa kipróbálása után a C: meghajtón lévő autoexec.bat kerül feltöltésre a web service-t futtató számítógépre, ahol létrejön egy _autoexec.bat állomány.