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
- TextEditorThreadLocalStore.cs
- CngUIPolicy.cs
- PriorityChain.cs
- DataAdapter.cs
- IndexerNameAttribute.cs
- WebBrowserNavigatedEventHandler.cs
- ConnectionsZone.cs
- DelimitedListTraceListener.cs
- CodeDelegateCreateExpression.cs
- MetafileHeader.cs
- EntityDataSourceContextDisposingEventArgs.cs
- XmlElement.cs
- StylusPointCollection.cs
- TimerEventSubscriptionCollection.cs
- ClientRequest.cs
- DesignTimeTemplateParser.cs
- SystemIPGlobalProperties.cs
- DesignerListAdapter.cs
- CatalogPartCollection.cs
- hresults.cs
- wpf-etw.cs
- UserMapPath.cs
- EarlyBoundInfo.cs
- TryCatchDesigner.xaml.cs
- PageThemeCodeDomTreeGenerator.cs
- ItemCheckEvent.cs
- WS2007FederationHttpBinding.cs
- SecurityCriticalDataForSet.cs
- ObjectMaterializedEventArgs.cs
- SelectionRange.cs
- CapabilitiesSection.cs
- WorkflowRuntimeServiceElement.cs
- ComponentResourceKey.cs
- HasCopySemanticsAttribute.cs
- SimpleLine.cs
- XmlIlGenerator.cs
- UnsafeNativeMethods.cs
- CommandConverter.cs
- XPathAxisIterator.cs
- RequestQueue.cs
- IChannel.cs
- CompositionDesigner.cs
- CompositionAdorner.cs
- EntityDataSourceColumn.cs
- Button.cs
- DropDownList.cs
- CalendarDay.cs
- ConfigXmlElement.cs
- _BasicClient.cs
- Helpers.cs
- HtmlInputControl.cs
- Transform3DGroup.cs
- WindowsListViewItem.cs
- RepeaterItemEventArgs.cs
- AuthorizationRule.cs
- SoapInteropTypes.cs
- Win32MouseDevice.cs
- FutureFactory.cs
- MetadataCollection.cs
- PerformanceCounterPermissionEntryCollection.cs
- SQLCharsStorage.cs
- Operand.cs
- SoapFaultCodes.cs
- Brush.cs
- WebCodeGenerator.cs
- Utility.cs
- BuildDependencySet.cs
- DockPattern.cs
- Facet.cs
- BaseTreeIterator.cs
- PageEventArgs.cs
- CookieProtection.cs
- CopyOnWriteList.cs
- FlowPosition.cs
- ArrayExtension.cs
- IPAddress.cs
- SynchronizedDispatch.cs
- EntityViewContainer.cs
- QueryOutputWriter.cs
- GridViewColumnCollection.cs
- XmlSchemaParticle.cs
- SmiContextFactory.cs
- BuildManagerHost.cs
- ShapeTypeface.cs
- QilFactory.cs
- ByteStream.cs
- DefaultParameterValueAttribute.cs
- JoinQueryOperator.cs
- SoundPlayer.cs
- TypeFieldSchema.cs
- EventLogHandle.cs
- CodeDelegateCreateExpression.cs
- COM2Properties.cs
- Graphics.cs
- GridViewRowPresenterBase.cs
- SqlUDTStorage.cs
- ConfigurationManagerInternalFactory.cs
- Stroke2.cs
- UnicodeEncoding.cs
- DesigntimeLicenseContextSerializer.cs