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
- DesignerTransaction.cs
- SafeCloseHandleCritical.cs
- ASCIIEncoding.cs
- FamilyTypefaceCollection.cs
- XmlCharCheckingReader.cs
- TypeGeneratedEventArgs.cs
- CommandLineParser.cs
- DbConnectionInternal.cs
- PathNode.cs
- ResolvedKeyFrameEntry.cs
- CorruptStoreException.cs
- DataContractSerializer.cs
- EntityDataSourceWizardForm.cs
- CodeDomDesignerLoader.cs
- MessageDescription.cs
- RadioButtonList.cs
- DataView.cs
- DrawListViewColumnHeaderEventArgs.cs
- MaxValueConverter.cs
- RSACryptoServiceProvider.cs
- TemplateKeyConverter.cs
- Ports.cs
- FormViewInsertedEventArgs.cs
- EllipseGeometry.cs
- SettingsPropertyWrongTypeException.cs
- ReferenceConverter.cs
- TypeDelegator.cs
- InheritanceUI.cs
- GiveFeedbackEventArgs.cs
- ObjectDataSourceView.cs
- HttpResponseInternalWrapper.cs
- SBCSCodePageEncoding.cs
- HandlerBase.cs
- Base64Decoder.cs
- DeflateStream.cs
- Keyboard.cs
- KeyGesture.cs
- SystemTcpConnection.cs
- HeaderUtility.cs
- TraceListeners.cs
- FactoryGenerator.cs
- ObjectDataSourceDisposingEventArgs.cs
- SignatureToken.cs
- FileUtil.cs
- EntityDataSourceWrapperCollection.cs
- WindowsSecurityToken.cs
- Decoder.cs
- EventPropertyMap.cs
- CollectionChangedEventManager.cs
- WebEventCodes.cs
- SymbolType.cs
- OleServicesContext.cs
- CommandBinding.cs
- ToolStripLocationCancelEventArgs.cs
- XomlCompilerResults.cs
- ColumnPropertiesGroup.cs
- XmlReflectionImporter.cs
- LocalIdKeyIdentifierClause.cs
- Empty.cs
- GlyphInfoList.cs
- DisplayNameAttribute.cs
- Preprocessor.cs
- XPathScanner.cs
- TextTreeTextElementNode.cs
- SqlClientPermission.cs
- AssemblyAttributesGoHere.cs
- FileLoadException.cs
- MultiPropertyDescriptorGridEntry.cs
- ClosableStream.cs
- TextParaClient.cs
- CallContext.cs
- Menu.cs
- SqlWorkflowInstanceStore.cs
- NamespaceMapping.cs
- QueryAccessibilityHelpEvent.cs
- XmlReflectionImporter.cs
- RangeBaseAutomationPeer.cs
- DependencySource.cs
- WorkerRequest.cs
- LambdaCompiler.Unary.cs
- NavigationProgressEventArgs.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- WorkerRequest.cs
- Clipboard.cs
- DeploymentSection.cs
- TypeSystem.cs
- CreateDataSourceDialog.cs
- TextContainerChangedEventArgs.cs
- NullableDoubleMinMaxAggregationOperator.cs
- IsolatedStorageFile.cs
- ParameterInfo.cs
- COSERVERINFO.cs
- AssemblyName.cs
- RtfNavigator.cs
- UrlSyndicationContent.cs
- AncestorChangedEventArgs.cs
- DiscoveryEndpointValidator.cs
- SingleAnimationBase.cs
- DataControlButton.cs
- TypeRestriction.cs