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
- OrderedDictionary.cs
- QueryOperationResponseOfT.cs
- SymmetricCryptoHandle.cs
- UnsafeNetInfoNativeMethods.cs
- DocumentGridPage.cs
- DesignTimeTemplateParser.cs
- NativeMethods.cs
- TableParaClient.cs
- MSAANativeProvider.cs
- DynamicVirtualDiscoSearcher.cs
- DataGridViewRowHeaderCell.cs
- InkCanvasSelectionAdorner.cs
- TextViewDesigner.cs
- GregorianCalendar.cs
- Path.cs
- LayoutTableCell.cs
- PropertyPushdownHelper.cs
- Rfc2898DeriveBytes.cs
- FontSizeConverter.cs
- HelpEvent.cs
- PtsCache.cs
- ProxyGenerator.cs
- Parameter.cs
- FileInfo.cs
- _emptywebproxy.cs
- DbProviderFactory.cs
- TableCellCollection.cs
- SplineKeyFrames.cs
- Point4D.cs
- HtmlAnchor.cs
- PartitionResolver.cs
- ClientBuildManager.cs
- IUnknownConstantAttribute.cs
- MultiAsyncResult.cs
- KeyManager.cs
- SystemFonts.cs
- HostingEnvironmentSection.cs
- SystemIPGlobalProperties.cs
- DebugView.cs
- TransformGroup.cs
- ArrayList.cs
- HtmlHistory.cs
- Pair.cs
- PrtTicket_Public_Simple.cs
- Debug.cs
- XmlEnumAttribute.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- CounterSampleCalculator.cs
- DrawingCollection.cs
- XPathBuilder.cs
- AvTrace.cs
- BindingObserver.cs
- ISAPIRuntime.cs
- RightsManagementEncryptedStream.cs
- UriSectionData.cs
- DaylightTime.cs
- BindStream.cs
- TileBrush.cs
- ISAPIApplicationHost.cs
- StructuredTypeEmitter.cs
- OleDbRowUpdatingEvent.cs
- AssemblyInfo.cs
- ZipIOExtraFieldPaddingElement.cs
- BorderGapMaskConverter.cs
- DescriptionAttribute.cs
- ProcessProtocolHandler.cs
- DesignRelation.cs
- CodeLinePragma.cs
- IndexOutOfRangeException.cs
- Itemizer.cs
- RelationshipType.cs
- ModelItemImpl.cs
- Calendar.cs
- TaskExtensions.cs
- ContextItem.cs
- CellIdBoolean.cs
- ActivityCodeDomReferenceService.cs
- OdbcConnection.cs
- DocumentEventArgs.cs
- PrimitiveCodeDomSerializer.cs
- ServiceContractViewControl.Designer.cs
- MatrixAnimationBase.cs
- StackBuilderSink.cs
- SafeNativeMethodsOther.cs
- SqlBuilder.cs
- DataColumnCollection.cs
- FontNamesConverter.cs
- _SafeNetHandles.cs
- Mappings.cs
- ObjectTag.cs
- SmiEventStream.cs
- EventRoute.cs
- BuildProviderCollection.cs
- DocumentViewerConstants.cs
- ProgressChangedEventArgs.cs
- ValidatingReaderNodeData.cs
- WebControlToolBoxItem.cs
- UriScheme.cs
- MD5.cs
- TempEnvironment.cs