HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Server property, avagy a HttpServerUtility osztály


Page osztály 2. rész

Példaprogram letöltése

12549 bájt

Az ASP.NET Web alkalmazás létrehozásánál az egyes Web Form-ok a System.Web.UI.Page osztályból származnak. A Page osztállyal ismerkedő sorozatunk mostani részében a Server property-t vesszük szemügyre, mely HttpServerUtility osztály típusú.

Minden WebForm-on tehát adott számunkra egy Server property, melyen keresztül elérhetjük a HttpServerUtility osztály szolgáltatásait. Ezek segítségével a webes kérések feldolgozásával kapcsolatos segítséget kaphatunk. Nézzük sorra melyek is ezek a lehetőségek.
Megtudhatjuk például a gép nevét a MachineName property-ből, melyen fut az alkalmazásunk.
    private void Page_Load(object sender, System.EventArgs e)
    {
      Label1.Text = Server.MachineName;
Lekérdezhetjük és állíthatjuk is, hogy egy-egy kérés kiszolgálása maximum hány másodpercig tartson. Ha az itt megadott idő letelik a kérés feldolgozásának indulása óta és még nem sikerült arra választ adni, akkor a programunk futása hibaüzenettel (HttpException) megszakad. Ehhez a ScriptTimeout property-t kell használnunk.
      Label5.Text = Server.ScriptTimeout.ToString()+" sec";      
Ha szükségünk van egy lokális állomány elérési útvonalára, akkor használjuk a MapPath-ot. Ha például egy XML adatállományunk van elhelyezve abba az alkönyvtárba, ahonnan fut a programunk, akkor ennek megnyitásához a fizikai elérési útvonalára van szükségünk. Ilyenkor a MapPath függvényt kell meghívnunk, melynek paraméterként adjuk át az állomány nevet és visszatérési értékként kapunk egy olyan sztringet, melyben teljes elérési útvonallal fog szerepelni az átadott állomány név.
      Label3.Text = Server.MapPath("Data1.xml");            
Megbízható HTTP adatátvitelhez elengedhetetlen, hogy megfelelően kódoljuk az URL-eket. Vannak bizonyos karakterek, melyek böngésző verzióktól és típusoktól függően másképp kezelendőek. Így például ha az URL-ben kérdőjelet használunk, akkor nem biztos, hogy minden esetben a kívánt hatást érjük el. Ha viszont %3f kódot használunk, akkor biztosak lehetünk abban, hogy a kérdőjel kérdőjelként kerül értelmezésre minden esetben. Az URL megfelelő kódolásáról az UrlEncode függvény gondoskodik.
      Label9.Text = Server.UrlEncode(HyperLink1.Text);
Lehetőségünk van arra, is, hogy az URL-ben csak a cím részét kódoljuk. Ehhez a UrlPathEncode függvényt kell meghívnunk.
      Label8.Text = Server.UrlPathEncode(HyperLink1.Text);
A kódolt sztringek visszaalakításához az UrlDecode függvény használható.
      Label12.Text = Server.UrlDecode(Label8.Text);      
Szöveget úgy is kódolhatunk, hogy azt a böngésző ne értelmezze, hanem megjelenítse. Ha például olyan sztringet használunk, melyben HTML kódok vannak, de a web oldalon azt szeretnénk, hogy e kódok ne értelmezve, hanem megjelenítve legyenek, akkor a HtmlEncode függvény hívásával át kell alakítanunk a szöveget. Alábbi példánál jól látszik, hogy míg az egyik esetben a <b> HTML parancs értelmezve lesz és így vastaggal jelenik meg a szöveg, addig a másik esetben megjelenik a <b> a szövegben és nem kerül értelmezésre.
      string s = "HTML forrás: <b>Text</b>";      
      Label15.Text = s;
      Label13.Text = Server.HtmlEncode(s);      
    }
Az így kódolt szöveget vissza is alakíthatjuk a HtmlDecode függvény hívással.
Ha érkezik egy kérés web site-unkra, de valamilyen oknál fogva ezt át kell irányítanunk egy másik oldalra, vagy akár egy másik alkalmazásra, akkor ehhez a Transfer függvényt célszerű használnunk. Ennek nagy előnye, hogy nem csak az átirányítást végzi el, de ha érkezett adat az előző web oldalról, akkor azok továbbítására is van lehetőség. Így például egy kitöltött űrlap összes adata tovább postázható. Egész pontosan ilyen esetben a QueryString és a Form kollekció adatai kerülnek továbbításra a cél oldal számára. A Transfer függvény első paraméterében a cél URL-t kell megadnunk. A második paraméter igaz értéke esetén az adatok továbbításra kerülnek, míg hamis érték esetén nem.
    private void Button1_Click(object sender, System.EventArgs e)
    {
      Server.Transfer("WebForm2.aspx", CheckBox1.Checked);
    }
Lehetőségünk van arra is, hogy futtassunk egy másik web kérést és ennek eredményét tetszőlegesen felhasználjuk. Mellékelt példában futtatjuk a WebForm3.aspx-et, majd az általa szolgáltatott eredményt beszúrjuk a WebForm1 lapjára.
Az Execute első paramétereként egy URL-t kell megadnunk, melyet futtatni szeretnénk. Ha a futás eredményeként létrejön adat és erre szükségünk is van, akkor használjuk az Execute második paraméterét, melyben egy StringWriter osztály példányát kell megadnunk. Az eredmény ebbe kerül eltárolásra így azt egyszerűen felhasználhatjuk: például értékül adhatjuk egy Label szövegének a kapott HTML kódot.
    private void Button2_Click(object sender, System.EventArgs e)
    {
      StringWriter sw = new StringWriter();
      Server.Execute("WebForm3.aspx", sw);
      Label16.Text = sw.ToString();
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 321. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |