Request ServerVariables


8 April 2002 @ 14:59

Om hvordan man arbejder med ServerVariables i ASP.net


af Anders Bodeval Carlsen

ServerVariables får man fat i som i ASP, dog med en lille ændring i syntaksen.
Hvor du er vant til at skrive f.eks.  Request.ServerVariables("SERVER_NAME")  skal du med ASP.net skrive:
Request.ServerVariables["SERVER_NAME"];

Desuden har du direkte adgang til en række variabler via HttpRequest objektet, som i det gamle asp kun kunne nås via Request.ServerVariables

Her et eksempel hvor adressen på den side som linker til den aktuelle side udskrives.
Reguest.UrlReferer returnerer ikke en streng med et objekt af typen Uri.

Uri MyUrl = Request.UrlReferrer;
Response.Write(MyUrl.ToString());

 

Liste med ServerVariables:

ALL_HTTP
ALL_RAW
APPL_MD_PATH
APPL_PHYSICAL_PATH
AUTH_TYPE
AUTH_USER
AUTH_PASSWORD
LOGON_USER
REMOTE_USER
CERT_COOKIE
CERT_FLAGS
CERT_ISSUER
CERT_KEYSIZE
CERT_SECRETKEYSIZE
CERT_SERIALNUMBER
CERT_SERVER_ISSUER
CERT_SERVER_SUBJECT
CERT_SUBJECT
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
HTTPS
HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE
HTTPS_SERVER_ISSUER
HTTPS_SERVER_SUBJECT
INSTANCE_ID
INSTANCE_META_PATH
LOCAL_ADDR
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PORT_SECURE
SERVER_PROTOCOL
SERVER_SOFTWARE
URL
HTTP_CONNECTION
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_COOKIE
HTTP_HOST
HTTP_USER_AGENT

Af sikkerhedsgrunde har jeg ikke lavet en live-demo, der udskriver værdierne af de forskellige variabler, men nederst på siden kan du downloade koden.

 

<%@ Page Language="C#" Debug="true"%>
<%@ Import Namespace="System.Data" %> <script runat="server">
    void Page_Load(Object sender, EventArgs e) {
// DataTablens Schema( det som den kommer til at indeholde) defineres
DataTable list = new DataTable();
list.Columns.Add(new DataColumn("ServerVariables", typeof(string)));
list.Columns.Add(new DataColumn("Value", typeof(string)));

NameValueCollection coll;
int loop1, loop2;

  // Load ServerVariable collection into NameValueCollection object.
coll=Request.ServerVariables;


// Get names of all keys into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{
String[] arr2=coll.GetValues(arr1[loop1]);
  DataRow dr = list.NewRow();
dr[0] = arr1[loop1];


for (loop2 = 0; loop2 < arr2.Length; loop2++)
{
dr[1] += arr2[loop2];
}
   list.Rows.Add(dr);
  }

DataView listView = new DataView(list);
DataList1.DataSource = listView;
DataList1.DataBind();
}
</script>

Request.ServerVariables returnerer et objekt af typen NameValueCollection. NameValueCollection minder nærmest om Dictionary objektet fra asp.
Med AllKeys konstrueres der et array som vi så kan loope igennem med en for - løkke:

 

Jeg vælger at bruge DataGrid til at præsenterer dataen med. Med AlternatingItemStyle får du på en let og elegant måde en læsevenlig tabel med skiftende farver for hver kolonne.

DataGrid

 

<asp:DataGrid id="DataList2" runat="server" 
CssClass="Normal" BorderColor="Tan"
BorderWidth="1px" BackColor="LightGoldenrodYellow"
CellPadding="2"
GridLines="None" ForeColor="Black" Width="100%">
<SelectedItemStyle ForeColor="GhostWhite" BackColor="DarkSlateBlue" />
<AlternatingItemStyle BackColor="PaleGoldenrod" />
<ItemStyle Font-Names="Latha" CssClass="Normal" />
<HeaderStyle Font-Bold="True" CssClass="Normal" />
</asp:DataGrid>

 

Datagrid skal af performance hensyn anvendes med omtanke, da den kræver store resurser af serveren, hvis man bruger den på store datamængder. Med i dette eksempel syntes jeg at den kommer til sin ret.
Havde jeg skrevet koden i download-eksemplet i det gamle Asp, havde koden til præsentationslaget fyldt mere en koden til dataen.  
Og bruger du Visual Studio.Net kan du meget hurtigt lave noget brugervenligt layout til din data-præsentation.



Valid XHTML 1.0!