Konstrukce URL v Silverlight aplikaci

Tomáš Holan       4. 2. 2013       Silverlight       5682 zobrazení

V článku zde jsme si ukázali jak nezávisle na konkrétní infrastruktuře nebo typu aplikace sestavovat URL, když známe base URL a k této base relativní URL. Dnes si naopak ukážeme jak sestavovat URL konkrétně v Silverlight aplikaci v případě, že známe app-relativní URL tj. pokud chceme v Silverlightu sestrojit URL zdroje umístěného na webu, který danou aplikaci hostuje.

Webová aplikace, která Silverlight aplikaci hostuje, typicky slouží i k hostování WCF (nebo jiných) služeb, které z této aplikace využíváme. Příkladem, kdy potřebujeme takto sestrojit URL, může být hned právě získání URL na tuto službu.

Pokud například bude naše WCF služba vystavena pomoci souboru (nebo odpovídající routy) Service.svc přímo v kořenovém adresáři webové aplikace a klient bude na Silverlight aplikaci přistupovat například z adresy http://www.contoso.com/WebApplication potřebujeme získat cílové URL http://www.contoso.com/WebApplication/Service.svc.

Pro sestavení tohoto URL využijeme hodnotu vrácenou pomoci vlastnosti Application.Current.Host.Source, která odpovídá URL .xap souboru aktuálně běžící Silverlight aplikace. Tato hodnota bude tedy například:

http://www.contoso.com/WebApplication/ClientBin/WebApplication.xap

Pro vlastní sestavení cílové URL nám pak na rozdíl od minule stačí používat pouze standardní konstruktor třídy Uri, ale s tím, že relativní URL musíme zadávat vzhledem k adresáři ClientBin (tj. kořenu aplikace odpovídá relativní URL “../”).

Sestavení URL bude tedy vypadat takto:

Uri url = new Uri(Application.Current.Host.Source, "../Service.svc");
http://www.contoso.com/WebApplication/Service.svc

Silverlight dále umí ještě získat i URL stránky, která Silverlight aplikaci hostuje. Tuto hodnotu vrací vlastnosti HtmlPage.Document.DocumentUri a může být konkrétně například:

http://www.contoso.com/WebApplication
http://www.contoso.com/WebApplication/
http://www.contoso.com/WebApplication/default.aspx

Podle toho z jaké konkrétní z podporovaných URL klient aplikaci spustil.

Skutečnost, že Silverlight aplikaci zpravidla odpovídá více URL, ale způsobuje použití této hodnoty jako základ pro sestavování URL podle mého názoru zbytečně obtížné a proto preferuji a zároveň doporučuji používat předchozí variantu.

Tato hodnota se ale případně může hodit, pokud naopak chceme, aby byla původní URL zachována (v této URL je také zachován i querystring nebo fragment). Takto můžeme například provést restart celé Silverlight aplikace:

System.Windows.Browser.HtmlPage.Window.Navigate(System.Windows.Browser.HtmlPage.Document.DocumentUri);

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback