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
- Polygon.cs
- SqlNodeAnnotation.cs
- TextServicesCompartment.cs
- ExpressionBuilder.cs
- Pair.cs
- DataRecordObjectView.cs
- SchemaImporter.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- GlyphRun.cs
- SoapEnumAttribute.cs
- RowCache.cs
- Visual3D.cs
- ToggleButtonAutomationPeer.cs
- HideDisabledControlAdapter.cs
- CollectionContainer.cs
- OleDbConnection.cs
- XmlArrayItemAttributes.cs
- XsdCachingReader.cs
- PrimitiveXmlSerializers.cs
- PrintingPermissionAttribute.cs
- StringComparer.cs
- TemplateComponentConnector.cs
- TextServicesCompartment.cs
- TextCharacters.cs
- AspNetSynchronizationContext.cs
- DataColumnPropertyDescriptor.cs
- XPathSingletonIterator.cs
- DataRecordInfo.cs
- XmlElementAttribute.cs
- EntityClientCacheKey.cs
- ConfigurationStrings.cs
- DataBindingExpressionBuilder.cs
- XmlAttributeCollection.cs
- ApplicationSecurityManager.cs
- DataGridViewCellStyleEditor.cs
- SingleObjectCollection.cs
- CultureTableRecord.cs
- SyntaxCheck.cs
- KeySpline.cs
- QueryExpr.cs
- SslStreamSecurityBindingElement.cs
- DataKeyArray.cs
- SourceSwitch.cs
- ControlBuilderAttribute.cs
- XmlNamedNodeMap.cs
- GridViewColumnHeaderAutomationPeer.cs
- DataGridHeaderBorder.cs
- ContentValidator.cs
- EndPoint.cs
- PropertyInformation.cs
- X509Chain.cs
- ProfilePropertySettings.cs
- RijndaelManaged.cs
- Simplifier.cs
- Size3D.cs
- GridViewUpdatedEventArgs.cs
- WindowsToolbar.cs
- SystemNetworkInterface.cs
- EventMappingSettingsCollection.cs
- LogStore.cs
- RtfToXamlReader.cs
- ArraySortHelper.cs
- CodeIterationStatement.cs
- OdbcReferenceCollection.cs
- TempEnvironment.cs
- WebBrowserSiteBase.cs
- Screen.cs
- GenericsNotImplementedException.cs
- CodeArrayIndexerExpression.cs
- FlowLayoutPanel.cs
- DataView.cs
- ConstraintManager.cs
- BitmapEffectState.cs
- XmlWriterDelegator.cs
- ReadOnlyCollection.cs
- ColorMatrix.cs
- GeneralTransform3DTo2DTo3D.cs
- Normalization.cs
- RegularExpressionValidator.cs
- COM2TypeInfoProcessor.cs
- LessThanOrEqual.cs
- SamlNameIdentifierClaimResource.cs
- DetailsView.cs
- QuaternionIndependentAnimationStorage.cs
- XamlDesignerSerializationManager.cs
- DictionaryTraceRecord.cs
- TreeBuilderBamlTranslator.cs
- RequestQueue.cs
- ItemAutomationPeer.cs
- PerformanceCounterPermissionAttribute.cs
- Decorator.cs
- Command.cs
- AppearanceEditorPart.cs
- PropertyGridCommands.cs
- GridProviderWrapper.cs
- ReverseComparer.cs
- RegexStringValidatorAttribute.cs
- TextTreeRootTextBlock.cs
- TagPrefixAttribute.cs
- ExitEventArgs.cs