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
- XmlQueryOutput.cs
- IDispatchConstantAttribute.cs
- DBDataPermission.cs
- DocumentViewer.cs
- ValueTable.cs
- Latin1Encoding.cs
- ProcessHostFactoryHelper.cs
- FilterException.cs
- DataTableExtensions.cs
- HttpRequestTraceRecord.cs
- MemberHolder.cs
- OdbcStatementHandle.cs
- NetworkCredential.cs
- MenuBindingsEditorForm.cs
- BufferedGenericXmlSecurityToken.cs
- SimpleMailWebEventProvider.cs
- NullableDoubleSumAggregationOperator.cs
- StyleBamlTreeBuilder.cs
- DesignerValidationSummaryAdapter.cs
- ToolStripCustomTypeDescriptor.cs
- FileDialogCustomPlacesCollection.cs
- ScrollBar.cs
- GlyphRun.cs
- TreeNodeConverter.cs
- SmiMetaDataProperty.cs
- DbRetry.cs
- GatewayDefinition.cs
- FunctionQuery.cs
- CompilationUnit.cs
- HttpValueCollection.cs
- NameGenerator.cs
- KeyTimeConverter.cs
- NeutralResourcesLanguageAttribute.cs
- ToolStripPanelRow.cs
- XmlCharType.cs
- XPathConvert.cs
- OrderByExpression.cs
- DesignConnectionCollection.cs
- Slider.cs
- ToolStripContainerActionList.cs
- AppLevelCompilationSectionCache.cs
- TransformedBitmap.cs
- ProfileServiceManager.cs
- ButtonRenderer.cs
- BinaryExpressionHelper.cs
- ProtocolReflector.cs
- HGlobalSafeHandle.cs
- ObjectStateFormatter.cs
- DrawingContextWalker.cs
- MemberAccessException.cs
- ObjectViewQueryResultData.cs
- Hash.cs
- PlatformCulture.cs
- SelectorAutomationPeer.cs
- UrlSyndicationContent.cs
- CLRBindingWorker.cs
- ArrayConverter.cs
- XmlNullResolver.cs
- ClosableStream.cs
- XmlValidatingReader.cs
- HtmlInputHidden.cs
- MatrixIndependentAnimationStorage.cs
- DecoderBestFitFallback.cs
- AppSecurityManager.cs
- PowerStatus.cs
- LoadedOrUnloadedOperation.cs
- TextServicesManager.cs
- ContentOperations.cs
- XsltSettings.cs
- DesignerOptions.cs
- DataGridViewCellCancelEventArgs.cs
- SoapMessage.cs
- DeleteStoreRequest.cs
- KeyedCollection.cs
- ActivityTypeDesigner.xaml.cs
- XPathSingletonIterator.cs
- ToolStripDropTargetManager.cs
- ICollection.cs
- SignatureDescription.cs
- LocalizeDesigner.cs
- HierarchicalDataTemplate.cs
- DetailsViewPageEventArgs.cs
- UiaCoreApi.cs
- OdbcPermission.cs
- ReadOnlyDataSourceView.cs
- ContentPresenter.cs
- ServiceHttpModule.cs
- DataColumnPropertyDescriptor.cs
- PropertyDescriptorGridEntry.cs
- SessionPageStateSection.cs
- TransformGroup.cs
- GroupDescription.cs
- FixedElement.cs
- Transform3DCollection.cs
- COM2IDispatchConverter.cs
- AnnotationMap.cs
- CreateUserWizardDesigner.cs
- ReflectionUtil.cs
- TemplateBaseAction.cs
- TransformerInfo.cs