2002-09-12 14:50
Accessing Server Variables From Within Web Services
Manohar Kamath
April 2, 2001
Level: Beginner
One of the most often asked question in newsgroups is "How do I get the IP address of the client browser within a web service?" The answer is very simple. The Context class within the system.web.services namespace represents the context of the web service. In other words, it has reference to various objects from within a running web service -- things like Response, Request and Session objects, and also such information as if the debugging is enabled on the service.
In this article, we will take a look at a very basic example that describes two things
Retrieve the IP address of the client browser
Retrieve
all the web server variables
The source code is self explanatory, and is
not supposed to be an introduction to web services (for such articles, refer to
Web Services. Part I: The Basics).
<%@ Webservice Language="C#" class="httpvars"
%>
using System;
using System.Collections;
using
System.Web.Services;
public class httpvars :
WebService
{
// This method returns the IP
address of the client
[WebMethod]
public String ipAddress
()
{
// The Context object contains reference to Request
object
return
Context.Request.ServerVariables["REMOTE_ADDR"];
}
// This method returns the all the server variables as
HTML
[WebMethod]
public
String allHttpVars ()
{
// Instantiate a collection
that will hold the
//
key-value collection of server
variables
NameValueCollection
serverVars;
String returnValue
= "";
serverVars = Context.Request.ServerVariables;
// Retrieve all the Keys from server variables
collection
// as a string
array
String[] arVars =
serverVars.AllKeys;
// Loop through the keys array and obtain
the
// values corresponding to
the individual keys
for (int x
= 0; x < arVars.Length;
x++)
{
returnValue+= "<b>" + arVars[x] + "</b>:
";
returnValue+= serverVars[arVars[x]] +
"<br>";
}
return
returnValue;
}
}