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
- ContentElement.cs
- StructureChangedEventArgs.cs
- XmlSchemaExternal.cs
- DbException.cs
- DrawingVisualDrawingContext.cs
- BridgeDataReader.cs
- DispatcherObject.cs
- Stream.cs
- ImageSourceValueSerializer.cs
- ChoiceConverter.cs
- PerformanceCounterPermissionEntryCollection.cs
- DataSourceSelectArguments.cs
- ComAdminInterfaces.cs
- AppDomainUnloadedException.cs
- VirtualPathUtility.cs
- Membership.cs
- PriorityQueue.cs
- ContactManager.cs
- SafeSecurityHandles.cs
- securitymgrsite.cs
- ProfileModule.cs
- LicenseContext.cs
- ActivationService.cs
- nulltextcontainer.cs
- EventData.cs
- XmlCountingReader.cs
- formatter.cs
- ContractUtils.cs
- SerializerProvider.cs
- BuilderPropertyEntry.cs
- Baml2006KnownTypes.cs
- UnSafeCharBuffer.cs
- ScopelessEnumAttribute.cs
- QueryTask.cs
- UIElement.cs
- TailCallAnalyzer.cs
- __TransparentProxy.cs
- BitmapEffectGroup.cs
- ServiceOperationListItem.cs
- MessagePartDescriptionCollection.cs
- StructuredType.cs
- ValidationHelper.cs
- RouteItem.cs
- ClipboardData.cs
- ReaderOutput.cs
- WpfKnownMember.cs
- RequestTimeoutManager.cs
- PagePropertiesChangingEventArgs.cs
- ConstructorExpr.cs
- TextRangeEdit.cs
- DiscoveryClientRequestChannel.cs
- TextPenaltyModule.cs
- PackWebRequestFactory.cs
- SourceSwitch.cs
- OleStrCAMarshaler.cs
- StringUtil.cs
- FontStretches.cs
- DynamicMethod.cs
- BaseTemplateCodeDomTreeGenerator.cs
- DEREncoding.cs
- RelatedView.cs
- WrapperEqualityComparer.cs
- ConnectionAcceptor.cs
- ObjectConverter.cs
- ReverseInheritProperty.cs
- SQLMoney.cs
- MetadataElement.cs
- DataBindingCollectionEditor.cs
- DocumentViewer.cs
- BinaryReader.cs
- DataControlExtensions.cs
- KeySplineConverter.cs
- XmlTextEncoder.cs
- TextSearch.cs
- TextEmbeddedObject.cs
- WebPartsSection.cs
- PieceDirectory.cs
- SelectionChangedEventArgs.cs
- RankException.cs
- SpecialFolderEnumConverter.cs
- ExternalException.cs
- GlyphsSerializer.cs
- GlobalizationAssembly.cs
- Help.cs
- Attributes.cs
- CompilationRelaxations.cs
- Bidi.cs
- ListViewSelectEventArgs.cs
- ParentUndoUnit.cs
- AutomationAttributeInfo.cs
- IndexedWhereQueryOperator.cs
- ArraySortHelper.cs
- MethodToken.cs
- ParserExtension.cs
- TreeNodeMouseHoverEvent.cs
- DocumentViewerBaseAutomationPeer.cs
- StickyNoteAnnotations.cs
- SchemaInfo.cs
- BigInt.cs
- ModuleElement.cs