一、使用Application对象保存数据
Application对象是System.Web.HttpApplicationState类的实例,对象内保存的信息可以在Web服务整个运行期间保存,并且可以被调用Web服务的所有用户使用。如果Web服务类派生自WebService类,则可以直接使用Application对象。
1、在Web服务中,将状态保存到Application对象:
Application["sum"]=100;
2、从Application对象中获取状态信息:
int mysum=Application["sum"];
3、同一时间可能会有多个客户读取或设置其中的值,为了避免造成冲突,发生异常,使用Application中的Lock()和Unlock()方法进行同步操作:
Application.Lock();
Application["sum"]=100;
Application.Unlock();
Server对象是System.Web.HttpServerUtility类的实例,提供了一系列可处理Web请求的方法。通过Server对象,Web服务使用者可以获取Web服务所在服务器的名称、物理路径等。
[WebMethod(Description="返回Web服务器名称")]
public string GetServerName()
{
return Server.MachineName;
}
[WebMethod(Description="把虚拟路径映射为物理路径")]
public string MapPath(string strVPath)
{
return Server.MapPath(strVPath);
}
三、访问Request对象
通过此对象,可以可以想Web服务发送HTTP请求信息。用户可以通过WebService类的Context属性来访问Request对象。
[WebMethod(
Description="返回客户浏览信息"
)]
public string[] GetRequest()
{
string[] arr=new string[8];
System.Web.HttpRequest request=this.Context.Request;
HttpBrowserCapbilities browser=request.Browser;
arr[0]="用户代理:"+request.UserAgent;
arr[1]="用户IP:"+request.UserHostAddress;
arr[2]="用户主机名:"+request.UserHostName;
arr[3]="请求方法:"+request.HttpMethod;
arr[4]="浏览器类型:"+request.Type;
arr[5]="浏览器名称:"+request.Browser;
arr[6]="浏览器版本:"+request.Version;
arr[7]="客户平台:"+request.PlatForm;
return arr;
}
四、访问Response对象
同Request相反,Web服务中的Response对象实现Web服务向客户发送信息的功能。同ASP.NET应用程序类似,Web服务中的Response对象也是System.Web.HttpResponse类的实例,不同之处在于,在Web服务中需要通过WebService类的Context属性来获取Response对象。
[WebMethod(Description="使用Response对象记录操作日志")]
public void Method1()
{
HttpResponse response=this.Context.Response;
if(response.StatusCode==200)
{
response.AppendToLog("用户成功调用方法Method1,@"+DataTime.Now.ToString);
}
else
{
response.AppendToLog("用户调用方法Method1失败,@"+DataTime.Now.ToString);
}
}