Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / HttpModule.cs / 1305376 / HttpModule.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Activation { using System.Diagnostics; using System.Runtime; using System.Security; using System.ServiceModel; using System.Web; using System.Web.Hosting; class HttpModule : IHttpModule { static bool disabled; [Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - called outside PermitOnly context.")] public void Dispose() { } [Fx.Tag.SecurityNote(Critical = "Entry-point from asp.net, accesses ProcessRequest which is SecurityCritical.")] [SecurityCritical] public void Init(HttpApplication context) { context.PostAuthenticateRequest += new EventHandler(ProcessRequest); } [Fx.Tag.SecurityNote(Critical = "Entry-point from asp.net, called outside PermitOnly context. ASP 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 void ProcessRequest(object sender, EventArgs e) { if (HttpModule.disabled) { return; } try { ServiceHostingEnvironment.SafeEnsureInitialized(); } catch (SecurityException exception) { HttpModule.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; } HttpApplication application = (HttpApplication)sender; // Check to see whether the extension is supported string extension = application.Request.CurrentExecutionFilePathExtension; if (string.IsNullOrEmpty(extension)) { return; } ServiceHostingEnvironment.ServiceType serviceType = ServiceHostingEnvironment.GetServiceType(extension); // do extension check first so that we do not need to do it in aspnetrouting/configurationbasedactivation if (serviceType == ServiceHostingEnvironment.ServiceType.Unknown) { return; } // check for AspNetcompat if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { // remap httphandler for xamlx in CBA, since there is No physical file and // the xamlx httphandlerfactory will do file exist checking if (serviceType == ServiceHostingEnvironment.ServiceType.Workflow && ServiceHostingEnvironment.IsConfigurationBasedService(application)) { application.Context.RemapHandler(new HttpHandler()); } return; } else if (serviceType == ServiceHostingEnvironment.ServiceType.WCF) { HostedHttpRequestAsyncResult.ExecuteSynchronous(application, false, false); } else if (serviceType == ServiceHostingEnvironment.ServiceType.Workflow) { HostedHttpRequestAsyncResult.ExecuteSynchronous(application, false, true); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Activation { using System.Diagnostics; using System.Runtime; using System.Security; using System.ServiceModel; using System.Web; using System.Web.Hosting; class HttpModule : IHttpModule { static bool disabled; [Fx.Tag.SecurityNote(Miscellaneous = "RequiresReview - called outside PermitOnly context.")] public void Dispose() { } [Fx.Tag.SecurityNote(Critical = "Entry-point from asp.net, accesses ProcessRequest which is SecurityCritical.")] [SecurityCritical] public void Init(HttpApplication context) { context.PostAuthenticateRequest += new EventHandler(ProcessRequest); } [Fx.Tag.SecurityNote(Critical = "Entry-point from asp.net, called outside PermitOnly context. ASP 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 void ProcessRequest(object sender, EventArgs e) { if (HttpModule.disabled) { return; } try { ServiceHostingEnvironment.SafeEnsureInitialized(); } catch (SecurityException exception) { HttpModule.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; } HttpApplication application = (HttpApplication)sender; // Check to see whether the extension is supported string extension = application.Request.CurrentExecutionFilePathExtension; if (string.IsNullOrEmpty(extension)) { return; } ServiceHostingEnvironment.ServiceType serviceType = ServiceHostingEnvironment.GetServiceType(extension); // do extension check first so that we do not need to do it in aspnetrouting/configurationbasedactivation if (serviceType == ServiceHostingEnvironment.ServiceType.Unknown) { return; } // check for AspNetcompat if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { // remap httphandler for xamlx in CBA, since there is No physical file and // the xamlx httphandlerfactory will do file exist checking if (serviceType == ServiceHostingEnvironment.ServiceType.Workflow && ServiceHostingEnvironment.IsConfigurationBasedService(application)) { application.Context.RemapHandler(new HttpHandler()); } return; } else if (serviceType == ServiceHostingEnvironment.ServiceType.WCF) { HostedHttpRequestAsyncResult.ExecuteSynchronous(application, false, false); } else if (serviceType == ServiceHostingEnvironment.ServiceType.Workflow) { HostedHttpRequestAsyncResult.ExecuteSynchronous(application, false, true); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InternalBufferOverflowException.cs
- EncodingFallbackAwareXmlTextWriter.cs
- StatusBarDrawItemEvent.cs
- TextRangeEditLists.cs
- CryptoKeySecurity.cs
- SQLRoleProvider.cs
- SqlSelectClauseBuilder.cs
- ValidationErrorCollection.cs
- TaskFileService.cs
- XmlUtf8RawTextWriter.cs
- VisualStateGroup.cs
- WebBrowser.cs
- BodyGlyph.cs
- XmlRawWriterWrapper.cs
- AuthorizationRule.cs
- SystemIPv6InterfaceProperties.cs
- SqlDataReader.cs
- HttpWriter.cs
- OrderedDictionary.cs
- ClassHandlersStore.cs
- DefaultEvaluationContext.cs
- WebPartMenu.cs
- NodeLabelEditEvent.cs
- HttpProfileBase.cs
- ViewValidator.cs
- FormsIdentity.cs
- Accessible.cs
- SafeArchiveContext.cs
- TextModifierScope.cs
- BrowserCapabilitiesFactoryBase.cs
- TdsEnums.cs
- DataGridViewRowCollection.cs
- OutputCacheModule.cs
- UpdatePanelControlTrigger.cs
- CrossAppDomainChannel.cs
- LineMetrics.cs
- BufferedGraphicsContext.cs
- UmAlQuraCalendar.cs
- ActivityInstanceReference.cs
- documentsequencetextview.cs
- EntityDataSourceChangingEventArgs.cs
- OrderingQueryOperator.cs
- RemoteWebConfigurationHostStream.cs
- ConfigUtil.cs
- Rect3D.cs
- basenumberconverter.cs
- ReachSerializableProperties.cs
- NamespaceList.cs
- WinEventTracker.cs
- XmlSchemaAnyAttribute.cs
- ModelUIElement3D.cs
- EtwTrace.cs
- ELinqQueryState.cs
- FastPropertyAccessor.cs
- RegexMatchCollection.cs
- ObjectCloneHelper.cs
- NetworkInformationException.cs
- NumberAction.cs
- HttpProfileGroupBase.cs
- PropertyDescriptor.cs
- CellPartitioner.cs
- TypeDefinition.cs
- OutputScopeManager.cs
- ServiceEndpointElement.cs
- HtmlTableRowCollection.cs
- RuntimeConfigurationRecord.cs
- ChildrenQuery.cs
- PackWebRequest.cs
- EditingCommands.cs
- ForwardPositionQuery.cs
- DesignerObject.cs
- MSAAWinEventWrap.cs
- CursorInteropHelper.cs
- FileStream.cs
- HttpTransportManager.cs
- UrlMappingCollection.cs
- RequestUriProcessor.cs
- WmlSelectionListAdapter.cs
- ListViewUpdateEventArgs.cs
- ColorInterpolationModeValidation.cs
- TextSelectionHighlightLayer.cs
- TypeNameConverter.cs
- HtmlInputPassword.cs
- CodePrimitiveExpression.cs
- Transform3DGroup.cs
- DataRelation.cs
- LicenseContext.cs
- RoleManagerEventArgs.cs
- FileLogRecord.cs
- HtmlTableRow.cs
- SimpleBitVector32.cs
- BadImageFormatException.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- ToolStripPanelRenderEventArgs.cs
- CodeTypeReferenceExpression.cs
- RIPEMD160.cs
- UIElementAutomationPeer.cs
- ButtonBaseAdapter.cs
- FormsAuthenticationConfiguration.cs
- DataViewListener.cs