Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / Compilation / WCFModel / HttpBindingExtension.cs / 1305376 / HttpBindingExtension.cs
//------------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using System.ServiceModel;
using System.ServiceModel.Description;
using WsdlNS = System.Web.Services.Description;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Security;
#if WEB_EXTENSIONS_CODE
namespace System.Web.Compilation.WCFModel
#else
namespace Microsoft.VSDesigner.WCFModel
#endif
{
///
/// Wsdl import extension to remove HttpGet and HttpPost bindings for ASMX services.
/// See detail in dev10 792007
///
#if WEB_EXTENSIONS_CODE
[PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")]
[SecurityCritical]
internal class HttpBindingExtension : IWsdlImportExtension
#else
[PermissionSet(SecurityAction.InheritanceDemand, Name ="FullTrust")]
[SecurityCritical]
internal class HttpBindingExtension : IWsdlImportExtension
#endif
{
readonly HashSet httpBindingContracts = new HashSet();
[SecuritySafeCritical]
static bool ContainsHttpBindingExtension(WsdlNS.Binding wsdlBinding)
{
//avoiding using wsdlBinding.Extensions.Find(typeof(WsdlNS.HttpBinding)) so the extension won't be marked as handled
foreach (object extension in wsdlBinding.Extensions)
{
if (extension is WsdlNS.HttpBinding)
{
string httpVerb = ((WsdlNS.HttpBinding)extension).Verb;
if (httpVerb.Equals("GET", StringComparison.OrdinalIgnoreCase) || httpVerb.Equals("POST", StringComparison.OrdinalIgnoreCase))
{
return true;
}
}
}
return false;
}
[SecuritySafeCritical]
public bool IsHttpBindingContract(ContractDescription contract)
{
return contract != null && httpBindingContracts.Contains(contract);
}
[SecuritySafeCritical]
public void BeforeImport(WsdlNS.ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection policy) {}
[SecuritySafeCritical]
public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context) {}
[SecuritySafeCritical]
public void ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext context)
{
if (context != null && context.WsdlBinding != null && ContainsHttpBindingExtension(context.WsdlBinding))
{
httpBindingContracts.Add(context.ContractConversionContext.Contract);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using System.ServiceModel;
using System.ServiceModel.Description;
using WsdlNS = System.Web.Services.Description;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Security;
#if WEB_EXTENSIONS_CODE
namespace System.Web.Compilation.WCFModel
#else
namespace Microsoft.VSDesigner.WCFModel
#endif
{
///
/// Wsdl import extension to remove HttpGet and HttpPost bindings for ASMX services.
/// See detail in dev10 792007
///
#if WEB_EXTENSIONS_CODE
[PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")]
[SecurityCritical]
internal class HttpBindingExtension : IWsdlImportExtension
#else
[PermissionSet(SecurityAction.InheritanceDemand, Name ="FullTrust")]
[SecurityCritical]
internal class HttpBindingExtension : IWsdlImportExtension
#endif
{
readonly HashSet httpBindingContracts = new HashSet();
[SecuritySafeCritical]
static bool ContainsHttpBindingExtension(WsdlNS.Binding wsdlBinding)
{
//avoiding using wsdlBinding.Extensions.Find(typeof(WsdlNS.HttpBinding)) so the extension won't be marked as handled
foreach (object extension in wsdlBinding.Extensions)
{
if (extension is WsdlNS.HttpBinding)
{
string httpVerb = ((WsdlNS.HttpBinding)extension).Verb;
if (httpVerb.Equals("GET", StringComparison.OrdinalIgnoreCase) || httpVerb.Equals("POST", StringComparison.OrdinalIgnoreCase))
{
return true;
}
}
}
return false;
}
[SecuritySafeCritical]
public bool IsHttpBindingContract(ContractDescription contract)
{
return contract != null && httpBindingContracts.Contains(contract);
}
[SecuritySafeCritical]
public void BeforeImport(WsdlNS.ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection policy) {}
[SecuritySafeCritical]
public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context) {}
[SecuritySafeCritical]
public void ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext context)
{
if (context != null && context.WsdlBinding != null && ContainsHttpBindingExtension(context.WsdlBinding))
{
httpBindingContracts.Add(context.ContractConversionContext.Contract);
}
}
}
}
// 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
- _HelperAsyncResults.cs
- BaseDataListDesigner.cs
- CodeSnippetTypeMember.cs
- HostVisual.cs
- ThemeableAttribute.cs
- WasEndpointConfigContainer.cs
- ErrorStyle.cs
- OutputCacheSection.cs
- Constants.cs
- AVElementHelper.cs
- GridItemPatternIdentifiers.cs
- TypeGeneratedEventArgs.cs
- HTMLTextWriter.cs
- SignedXmlDebugLog.cs
- SymbolType.cs
- Metafile.cs
- DataGridRelationshipRow.cs
- SmiEventStream.cs
- IndexOutOfRangeException.cs
- Transform3DGroup.cs
- BookmarkScopeInfo.cs
- QilInvokeEarlyBound.cs
- IISMapPath.cs
- Table.cs
- FindCriteriaApril2005.cs
- SafeHandle.cs
- DataGridColumn.cs
- WebPartDescriptionCollection.cs
- ComponentConverter.cs
- ToolStripHighContrastRenderer.cs
- GeneralTransformGroup.cs
- HttpPostedFile.cs
- XmlSchemaExporter.cs
- elementinformation.cs
- VideoDrawing.cs
- SimpleBitVector32.cs
- ItemType.cs
- ServiceOperationInvoker.cs
- SqlMultiplexer.cs
- HttpSessionStateWrapper.cs
- ManipulationStartedEventArgs.cs
- AttributeUsageAttribute.cs
- ServiceBehaviorElementCollection.cs
- XmlImplementation.cs
- DataRowChangeEvent.cs
- XamlLoadErrorInfo.cs
- Validator.cs
- RequestSecurityTokenResponse.cs
- BufferedGraphicsContext.cs
- SaveFileDialogDesigner.cs
- GroupJoinQueryOperator.cs
- PriorityQueue.cs
- HttpStreamMessageEncoderFactory.cs
- PopupRootAutomationPeer.cs
- ItemsPresenter.cs
- EntryWrittenEventArgs.cs
- TraceXPathNavigator.cs
- AutomationAttributeInfo.cs
- HttpContextWrapper.cs
- AnimatedTypeHelpers.cs
- WebBrowserHelper.cs
- ProfileParameter.cs
- DataBindingList.cs
- DataViewSetting.cs
- AuthenticationService.cs
- RectKeyFrameCollection.cs
- IdentitySection.cs
- ObjectPersistData.cs
- SqlDataSourceFilteringEventArgs.cs
- MissingManifestResourceException.cs
- ElapsedEventArgs.cs
- HostedNamedPipeTransportManager.cs
- ExceptionUtil.cs
- ApplicationProxyInternal.cs
- sqlstateclientmanager.cs
- BoolLiteral.cs
- XmlFormatExtensionPrefixAttribute.cs
- MimeTypePropertyAttribute.cs
- EdmComplexTypeAttribute.cs
- BitmapVisualManager.cs
- ThreadExceptionDialog.cs
- InheritanceAttribute.cs
- ExceptionUtility.cs
- AtomMaterializerLog.cs
- DrawListViewColumnHeaderEventArgs.cs
- ValidationErrorEventArgs.cs
- PreloadHost.cs
- HttpListenerResponse.cs
- TransactionsSectionGroup.cs
- typedescriptorpermission.cs
- SingleStorage.cs
- ActiveDocumentEvent.cs
- BinaryConverter.cs
- CircleHotSpot.cs
- DragEvent.cs
- CharacterMetrics.cs
- Exceptions.cs
- HandlerFactoryCache.cs
- KeyboardDevice.cs
- CompatibleIComparer.cs