ServiceHttpHandlerFactory.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Activation / ServiceHttpHandlerFactory.cs / 1 / ServiceHttpHandlerFactory.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace System.ServiceModel.Activation 
{
    using System.Threading; 
    using System.ServiceModel; 
    using System.ServiceModel.Channels;
    using System.ServiceModel.Diagnostics; 
    using System.Web;
    using System.Web.SessionState;
    using System.Security;
 
    class ServiceHttpHandlerFactory : IHttpHandlerFactory
    { 
        IHttpHandler handler; 

        ///  
        /// RequiresReview - Called outside PermitOnly context.
        /// 
        [SecurityRequiresReview]
        public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) 
        {
            if (this.handler == null) 
            { 
                this.handler = new ServiceHttpHandler();
            } 
            return this.handler;
        }

        ///  
        /// RequiresReview - Called outside PermitOnly context.
        ///  
        [SecurityRequiresReview] 
        public void ReleaseHandler(IHttpHandler handler)
        { 
            DiagnosticUtility.DebugAssert(handler is ServiceHttpHandler, "ASP.NET asked to release the wrong handler.");
        }

        class ServiceHttpHandler : IHttpAsyncHandler, IRequiresSessionState 
        {
            public bool IsReusable 
            { 
                /// 
                /// RequiresReview - Called outside PermitOnly context. 
                /// 
                [SecurityRequiresReview]
                get
                { 
                    return true;
                } 
            } 

            ///  
            /// Critical - Entry-point from ASP.NET, called outside PermitOnly context.
            ///            ASP.NET calls are critical.
            ///            ExecuteSynchronous is critical because it captures HostedImpersonationContext
            ///            (and makes it available later) so caller must ensure that this is called in the right place. 
            /// 
            [SecurityCritical] 
            public void ProcessRequest(HttpContext context) 
            {
                ServiceHostingEnvironment.SafeEnsureInitialized(); 

                HostedHttpRequestAsyncResult.ExecuteSynchronous(context.ApplicationInstance, true);
            }
 
            /// 
            /// Critical - Entry-point from ASP.NET, called outside PermitOnly context. 
            ///            ASP.NET calls are critical. 
            ///            ExecuteSynchronous is critical because it captures HostedImpersonationContext
            ///            (and makes it available later) so caller must ensure that this is called in the right place. 
            /// 
            [SecurityCritical]
            public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
            { 
                ServiceHostingEnvironment.SafeEnsureInitialized();
 
                return new HostedHttpRequestAsyncResult(context.ApplicationInstance, true, cb, extraData); 
            }
 
            /// 
            /// RequiresReview - Called outside PermitOnly context.
            /// 
            [SecurityRequiresReview] 
            public void EndProcessRequest(IAsyncResult result)
            { 
                HostedHttpRequestAsyncResult.End(result); 
            }
        } 
    }
}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK