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
- DebugController.cs
- GeneralTransform3DTo2DTo3D.cs
- SmiEventStream.cs
- ColorConverter.cs
- MarkupCompilePass1.cs
- SafeArrayTypeMismatchException.cs
- Sentence.cs
- UnsafeNativeMethodsMilCoreApi.cs
- MatchingStyle.cs
- FileDialog.cs
- DPTypeDescriptorContext.cs
- SHA1.cs
- Listbox.cs
- PrtTicket_Editor.cs
- MulticastOption.cs
- UpdatePanelControlTrigger.cs
- ConstraintCollection.cs
- ArraySubsetEnumerator.cs
- RightsManagementPermission.cs
- MetadataSource.cs
- XpsSerializationManager.cs
- MenuDesigner.cs
- GrabHandleGlyph.cs
- HttpCachePolicy.cs
- ImageFormatConverter.cs
- XmlNavigatorFilter.cs
- EmptyEnumerator.cs
- XmlTextReader.cs
- PropertyChangingEventArgs.cs
- ByeOperation11AsyncResult.cs
- XmlAnyElementAttribute.cs
- TreeNodeEventArgs.cs
- IndexExpression.cs
- SecUtil.cs
- XmlTextReaderImpl.cs
- SqlCharStream.cs
- WorkflowViewService.cs
- XmlSchemaExporter.cs
- HtmlElementEventArgs.cs
- DBBindings.cs
- StylusSystemGestureEventArgs.cs
- Image.cs
- EditableRegion.cs
- MemberHolder.cs
- LinkDesigner.cs
- Attributes.cs
- MembershipValidatePasswordEventArgs.cs
- XmlSerializerImportOptions.cs
- ProfilePropertySettings.cs
- OrCondition.cs
- RenderingBiasValidation.cs
- InvalidateEvent.cs
- SizeLimitedCache.cs
- ImpersonateTokenRef.cs
- AdvancedBindingEditor.cs
- BaseParser.cs
- ProgressBarHighlightConverter.cs
- DPCustomTypeDescriptor.cs
- ServiceProviders.cs
- HttpHandlerActionCollection.cs
- RetrieveVirtualItemEventArgs.cs
- StrokeNodeData.cs
- RenderDataDrawingContext.cs
- Configuration.cs
- XmlObjectSerializerContext.cs
- CodeDOMUtility.cs
- ReversePositionQuery.cs
- LookupNode.cs
- ScriptModule.cs
- MatrixValueSerializer.cs
- XmlAttribute.cs
- CodeFieldReferenceExpression.cs
- ConstraintStruct.cs
- RepeaterItem.cs
- CuspData.cs
- BindToObject.cs
- UriTemplateTrieNode.cs
- SelectedGridItemChangedEvent.cs
- DataGridCommandEventArgs.cs
- CompletedAsyncResult.cs
- RightsController.cs
- PrivilegedConfigurationManager.cs
- DataObject.cs
- WindowsStreamSecurityElement.cs
- DrawingBrush.cs
- NestPullup.cs
- TraceSection.cs
- KnownBoxes.cs
- SessionPageStatePersister.cs
- DataTableMappingCollection.cs
- WebPartDisplayModeCancelEventArgs.cs
- SecurityRuntime.cs
- AnnotationDocumentPaginator.cs
- WebPartZone.cs
- AvTraceFormat.cs
- FilterElement.cs
- DecodeHelper.cs
- HttpRuntime.cs
- CultureMapper.cs
- GridLengthConverter.cs