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
- TextBlockAutomationPeer.cs
- TransformerTypeCollection.cs
- ThumbButtonInfoCollection.cs
- ObjectItemNoOpAssemblyLoader.cs
- CommandField.cs
- KeysConverter.cs
- ReceiveDesigner.xaml.cs
- PhoneCall.cs
- XPathNavigator.cs
- ClientSideProviderDescription.cs
- InputReportEventArgs.cs
- CodeNamespace.cs
- WindowsListViewItemCheckBox.cs
- FixedLineResult.cs
- XslCompiledTransform.cs
- MiniModule.cs
- XmlSchemaDocumentation.cs
- GlobalProxySelection.cs
- RubberbandSelector.cs
- HwndStylusInputProvider.cs
- FormsAuthentication.cs
- FixedSchema.cs
- ModuleElement.cs
- DataBoundLiteralControl.cs
- MulticastOption.cs
- Trigger.cs
- LayoutTable.cs
- SessionEndingCancelEventArgs.cs
- FaultHandlingFilter.cs
- FloatSumAggregationOperator.cs
- ExternalFile.cs
- WinFormsSecurity.cs
- DataSet.cs
- ProfileInfo.cs
- SmtpFailedRecipientsException.cs
- CodeTypeParameter.cs
- GetImportFileNameRequest.cs
- ProxyHwnd.cs
- DrawToolTipEventArgs.cs
- GeneralTransformGroup.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- Queue.cs
- Matrix.cs
- CngKeyBlobFormat.cs
- ChildDocumentBlock.cs
- FunctionImportElement.cs
- XmlnsCompatibleWithAttribute.cs
- AspCompat.cs
- FormViewCommandEventArgs.cs
- DbProviderSpecificTypePropertyAttribute.cs
- SerializationInfoEnumerator.cs
- HitTestDrawingContextWalker.cs
- BulletedList.cs
- PassportPrincipal.cs
- DataSourceControl.cs
- Pkcs7Signer.cs
- SyndicationDeserializer.cs
- SiteMapNodeItem.cs
- CompilerScopeManager.cs
- AsyncOperationManager.cs
- UrlAuthorizationModule.cs
- FormatConvertedBitmap.cs
- UndirectedGraph.cs
- thaishape.cs
- ContainerActivationHelper.cs
- HttpClientProtocol.cs
- CustomErrorCollection.cs
- RegularExpressionValidator.cs
- DynamicMethod.cs
- ValidationSummary.cs
- SHA1CryptoServiceProvider.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- XmlWrappingReader.cs
- AppLevelCompilationSectionCache.cs
- NotificationContext.cs
- Registry.cs
- SystemIPAddressInformation.cs
- CellCreator.cs
- DbException.cs
- WizardStepCollectionEditor.cs
- ISFClipboardData.cs
- DocumentOrderQuery.cs
- DBNull.cs
- VirtualPath.cs
- ScheduleChanges.cs
- _BufferOffsetSize.cs
- PointF.cs
- DaylightTime.cs
- NativeBuffer.cs
- UIServiceHelper.cs
- ObjectDataSourceMethodEditor.cs
- ConfigurationPermission.cs
- OrderedDictionary.cs
- TrackingLocationCollection.cs
- log.cs
- GuidelineSet.cs
- APCustomTypeDescriptor.cs
- DecimalAnimation.cs
- MouseCaptureWithinProperty.cs
- TextTreeRootTextBlock.cs