//------------------------------------------------------------------------------ // // 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; } } }