
Mellékelt példa megnyitása előtt szükséges egy Service nevű virtuális könyvtár létrehozása, mely a példa mappájában található Service alkönyvtárra mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A kliens alkalmazás futtatása előtt gondoskodnunk kell arról, hogy a Web szerver virtuális mappájában engedélyezzük a névtelen hozzáférést.
Az alkalmazás űrlapján elhelyeztünk egy szövegmezőt, melyben megadhatunk egy tetszőleges URL-t, melyen egy Webes szerviz elérhető. A példához mellékeltünk egy szervizt, hogy az rögtön kipróbálható legyen.
A szövegmezőben megadva a megfelelő URL-t csak a MŰVELET gombra kell kattintanunk, és a szerviz jellemzőit leíró dokumentumok – WService.disco, WService.wsdl, és result.discomap -, a Client mappában található results alkönyvtárba kerülnek.
A .NET Framework System.Web.Services.Discovery nevű névterében találjuk meg azokat az osztályokat, melyekkel a szerviz jellemzői feltárhatók.
A DiscoveryClientProtocol osztály segítségével végezhető el a procedúra jelentős része. Az osztály metódusaival generálhatók a dokumentumok, melyek leírják a szerviz viselkedését, felhasználásának módját. A következőkben bemutatjuk, milyen metódusok meghívása szükséges a dokumentumok generálásához.

DiscoverAny
Osztály: DiscoveryClientProtocol
public DiscoveryDocument DiscoverAny(
string url
);
A metódus észleli, hogy a megadott URL szerviz dokumentum, jellemző, vagy XSD séma. Amennyiben az URL csak egy referencia a dokumentumokra, akkor a Discover metódust kell meghívni.
Paraméterek
string url
A szerviz alkalmazás URL-je.
Visszatérési érték
Tartalmazza a szerviz URL-jének végigpásztázása után észlelt dokumentumokat.

ResolveAll
Osztály: DiscoveryClientProtocol
public void ResolveAll();
Észleli az összes létező referenciát, és elhelyezi azokat a Documents kollekcióban.
A jellemző property-k:

Documents
Osztály: DiscoveryClientProtocol
public DiscoveryClientDocumentCollection Documents {get;}
A művelet eredményeképpen észlelt, a szerviz alkalmazás jellemzőit leíró dokumentumok gyűjteménye.
A feladatban néhány lépésben végeztük el a műveletet.
Először szükség volt egy DiscoveryClientProtocol objektumra:
DiscoveryClientProtocol c = new DiscoveryClientProtocol();
Beállítjuk a megfelelő jogosultságokat a szerviz eléréséhez.
c.Credentials = CredentialCache.DefaultCredentials;
Létrehozunk egy DiscoveryDocument objektumot a lekérdezéshez.
Lekérdezzük a dokumentumokat.
doc = c.DiscoverAny(textBox1.Text);
...
Ha talált a lekérdezés dokumentumot, vagyis az URL megfelelő volt, akkor megjelenítjük a ListBox kontrolban az eredményt.
if (c.Documents.Count > 0) FillList(c);
Majd a RESULTS mappába írjuk a dokumentumokat.
c.WriteAll(Application.StartupPath + "\\results", "results.discomap");
A FillList metódusban a következőképpen listázzuk ki a dokumentumok jellemzőit:
foreach (DictionaryEntry entry in c.Documents)
{
listBox1.Items.Add(entry.Key.ToString());
}