//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
/*
*/
namespace System.Web.Services {
using System.Diagnostics;
using System.Web;
using System.ComponentModel;
using System.Web.SessionState;
using System.Web.Services.Protocols;
using System.Security.Principal;
using System.Security.Permissions;
using System.Runtime.InteropServices;
///
///
/// Defines the
/// optional base class for Web Services, which provides direct access to common
/// ASP.NET objects, like those for application and session state.
///
public class WebService : MarshalByValueComponent {
private HttpContext context;
///
///
/// Gets a
/// reference to the application object for the current HTTP request.
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Description("The ASP.NET application object for the current request.")]
public HttpApplicationState Application {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
return Context.Application;
}
}
///
///
/// Gets the ASP.NET Context object for the current request,
/// which encapsulates all HTTP-specific context
/// used by the HTTP server to process Web requests.
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebServicesDescription(Res.WebServiceContext)]
public HttpContext Context {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
PartialTrustHelpers.FailIfInPartialTrustOutsideAspNet();
if (context == null)
context = HttpContext.Current;
if (context == null)
throw new InvalidOperationException(Res.GetString(Res.WebMissingHelpContext));
return context;
}
}
///
///
/// Gets a reference to the
/// instance for the current request.
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebServicesDescription(Res.WebServiceSession)]
public HttpSessionState Session {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
return Context.Session;
}
}
///
///
/// Gets a reference to the
/// for the current request.
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebServicesDescription(Res.WebServiceServer)]
public HttpServerUtility Server {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
return Context.Server;
}
}
///
///
/// Gets the ASP.NET server User object, used for authorizing the request.
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebServicesDescription(Res.WebServiceUser)]
public IPrincipal User {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
return Context.User;
}
}
///
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), WebServicesDescription(Res.WebServiceSoapVersion), ComVisible(false)]
public SoapProtocolVersion SoapVersion {
[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
get {
object o = Context.Items[SoapVersionContextSlot];
if (o != null && o is SoapProtocolVersion)
return (SoapProtocolVersion)o;
else
return SoapProtocolVersion.Default;
}
}
internal static readonly string SoapVersionContextSlot = "WebServiceSoapVersion";
internal void SetContext(HttpContext context) {
this.context = context;
}
}
}