Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Activation / ServiceHttpModule.cs / 1 / ServiceHttpModule.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Activation { using System.IO; using System.Text; using System.ServiceModel; using System.Web; using System.Web.Hosting; using System.Security; using System.Security.Permissions; using System.Diagnostics; class ServiceHttpModule : IHttpModule { ////// Critical - Holds pointer to BeginProcessRequest which is SecurityCritical. /// This callback is called outside the PermitOnly context. /// [SecurityCritical] static BeginEventHandler beginEventHandler; ////// Critical - This callback is called outside the PermitOnly context. /// [SecurityCritical] static EndEventHandler endEventHandler; static bool disabled; ////// RequiresReview - Called outside PermitOnly context, /// [SecurityRequiresReview] public void Dispose() { } ////// Critical - Entry-point from ASP.NET, accesses begin/bndProcessRequest which are SecurityCritical. /// [SecurityCritical] public void Init(HttpApplication context) { if (ServiceHttpModule.beginEventHandler == null) { ServiceHttpModule.beginEventHandler = new BeginEventHandler(BeginProcessRequest); } if (ServiceHttpModule.endEventHandler == null) { ServiceHttpModule.endEventHandler = new EndEventHandler(EndProcessRequest); } context.AddOnPostAuthenticateRequestAsync( ServiceHttpModule.beginEventHandler, ServiceHttpModule.endEventHandler); } ////// Critical - Entry-point from ASP.NET, called outside PermitOnly context. /// ASP.NET calls are critical. /// HostedHttpRequestAsyncResult..ctor is critical because it captures HostedImpersonationContext /// (and makes it available later) so caller must ensure that this is called in the right place. /// [SecurityCritical] static public IAsyncResult BeginProcessRequest(object sender, EventArgs e, AsyncCallback cb, object extraData) { if (ServiceHttpModule.disabled) { return new CompletedAsyncResult(cb, extraData);; } try { ServiceHostingEnvironment.SafeEnsureInitialized(); } catch (SecurityException exception) { ServiceHttpModule.disabled = true; if (DiagnosticUtility.ShouldTraceWarning) { DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Warning); } // If requesting a .svc file, the HttpHandler will try to handle it. It will call // SafeEnsureInitialized() again, which will fail with the same exception (it is // idempotent on failure). This is the correct behavior. return new CompletedAsyncResult(cb, extraData); } if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { return new CompletedAsyncResult(cb, extraData); } // Check to see whether the extension is supported. HttpApplication application = (HttpApplication) sender; string extension = System.IO.Path.GetExtension(application.Request.FilePath); if (extension == null || !ServiceHostingEnvironment.GetExtensionSupported(extension)) { return new CompletedAsyncResult(cb, extraData); } return new HostedHttpRequestAsyncResult(application, false, cb, extraData); } ////// RequiresReview - Called outside PermitOnly context, /// [SecurityRequiresReview] static public void EndProcessRequest(IAsyncResult ar) { if (ar is CompletedAsyncResult) { CompletedAsyncResult.End(ar); } else { HostedHttpRequestAsyncResult.End(ar); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridLinkButton.cs
- FlowDocumentReader.cs
- HeaderUtility.cs
- CellParagraph.cs
- ObjectItemCollection.cs
- DataIdProcessor.cs
- WebPartCatalogCloseVerb.cs
- WebPartHelpVerb.cs
- MembershipPasswordException.cs
- StaticDataManager.cs
- SecurityChannelFactory.cs
- UniqueID.cs
- SystemIcmpV6Statistics.cs
- Type.cs
- ContactManager.cs
- ContainerSelectorGlyph.cs
- SafeViewOfFileHandle.cs
- Attributes.cs
- UITypeEditor.cs
- TableRowCollection.cs
- SettingsPropertyIsReadOnlyException.cs
- PathData.cs
- StylusLogic.cs
- UpdateEventArgs.cs
- StateInitialization.cs
- QilCloneVisitor.cs
- SiteMapPath.cs
- EnlistmentTraceIdentifier.cs
- ScrollViewer.cs
- BasePattern.cs
- CaseCqlBlock.cs
- KeyGestureValueSerializer.cs
- Automation.cs
- PersonalizablePropertyEntry.cs
- FixedHyperLink.cs
- TypeElement.cs
- MetadataSource.cs
- CompilerParameters.cs
- DictionaryContent.cs
- TaskFormBase.cs
- PathFigureCollectionConverter.cs
- CookielessHelper.cs
- EditingCommands.cs
- ButtonFlatAdapter.cs
- BounceEase.cs
- FrameworkTextComposition.cs
- DoubleCollectionConverter.cs
- DbParameterCollection.cs
- XamlStream.cs
- ExpressionParser.cs
- Soap12ProtocolImporter.cs
- ChannelManager.cs
- PasswordBox.cs
- WebPartManagerInternals.cs
- ObjectDataSource.cs
- TextComposition.cs
- HttpListener.cs
- ChannelEndpointElementCollection.cs
- DisplayNameAttribute.cs
- DataObjectSettingDataEventArgs.cs
- CapabilitiesPattern.cs
- ControlCachePolicy.cs
- RichTextBox.cs
- OutputCacheModule.cs
- MetadataCacheItem.cs
- PointLightBase.cs
- _SafeNetHandles.cs
- WpfKnownMemberInvoker.cs
- MustUnderstandBehavior.cs
- ServiceParser.cs
- BaseEntityWrapper.cs
- BaseResourcesBuildProvider.cs
- KeyGesture.cs
- ActivationArguments.cs
- ParameterRefs.cs
- DateTimeFormat.cs
- DelegateCompletionCallbackWrapper.cs
- ServiceHostFactory.cs
- StorageSetMapping.cs
- VBIdentifierDesigner.xaml.cs
- MembershipValidatePasswordEventArgs.cs
- SecureStringHasher.cs
- TreeNodeBinding.cs
- TextDataBindingHandler.cs
- hresults.cs
- LeaseManager.cs
- QilPatternFactory.cs
- SqlMethods.cs
- DeadCharTextComposition.cs
- hresults.cs
- IriParsingElement.cs
- DataGridState.cs
- ISAPIRuntime.cs
- MembershipSection.cs
- MarshalDirectiveException.cs
- ReceiveContent.cs
- TransformProviderWrapper.cs
- TextWriterEngine.cs
- HttpCapabilitiesSectionHandler.cs
- HtmlControl.cs