Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / HybridWebProxyFinder.cs / 1305376 / HybridWebProxyFinder.cs
using System; using System.Collections.Generic; using System.Diagnostics; namespace System.Net { // This class behaves the same as WinHttpWebProxyFinder. The only difference is that in cases where // the script location has a scheme != HTTP, it falls back to NetWebProxyFinder which supports // also other schemes like FILE and FTP. // The mid-term goal for WinHttp is to support at least FILE scheme since it was already requested // by customers. The long term goal for System.Net is to use WinHttp only and remove this class // as well as NetWebProxyFinder. internal sealed class HybridWebProxyFinder : IWebProxyFinder { private NetWebProxyFinder netFinder; private WinHttpWebProxyFinder winHttpFinder; private BaseWebProxyFinder currentFinder; private AutoWebProxyScriptEngine engine; public HybridWebProxyFinder(AutoWebProxyScriptEngine engine) { this.engine = engine; this.winHttpFinder = new WinHttpWebProxyFinder(engine); this.currentFinder = winHttpFinder; } public bool IsValid { get { return currentFinder.IsValid; } } public bool GetProxies(Uri destination, out IListproxyList) { if (currentFinder.GetProxies(destination, out proxyList)) { return true; } if (currentFinder.IsUnrecognizedScheme && (currentFinder == winHttpFinder)) { // If WinHttpWebProxyFinder failed because the script location has a != HTTP scheme, // fall back to NetWebProxyFinder which supports also other schemes. if (netFinder == null) { netFinder = new NetWebProxyFinder(engine); } currentFinder = netFinder; return currentFinder.GetProxies(destination, out proxyList); } // Something else went wrong. Falling back to NetWebProxyFinder wouldn't help. return false; } public void Abort() { // Abort only the current finder. There is no need to abort the other one (which is either // uninitialized, i.e. not used yet, or we have an unrecognized-scheme state, which should // not be changed). currentFinder.Abort(); } public void Reset() { winHttpFinder.Reset(); if (netFinder != null) { netFinder.Reset(); } // Some settings changed, so let's reset the current finder to WinHttpWebProxyFinder, since // now it may work (if it didn't already before). currentFinder = winHttpFinder; } public void Dispose() { Dispose(true); } private void Dispose(bool disposing) { if (disposing) { winHttpFinder.Dispose(); if (netFinder != null) { netFinder.Dispose(); } } } } } // 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
- SerialErrors.cs
- WebPartCollection.cs
- SupportingTokenProviderSpecification.cs
- arclist.cs
- GetCardDetailsRequest.cs
- X509RecipientCertificateClientElement.cs
- EventDescriptor.cs
- _ContextAwareResult.cs
- SerializationInfoEnumerator.cs
- ProfileBuildProvider.cs
- RowToFieldTransformer.cs
- OdbcEnvironmentHandle.cs
- EventProviderWriter.cs
- DataGridViewToolTip.cs
- SamlAuthorizationDecisionStatement.cs
- FloatUtil.cs
- FileEnumerator.cs
- XmlEnumAttribute.cs
- LogicalExpressionTypeConverter.cs
- DataGridViewRowPostPaintEventArgs.cs
- FileSystemWatcher.cs
- RC2.cs
- Vector3DCollectionConverter.cs
- LocatorPart.cs
- MarshalByRefObject.cs
- GetPageNumberCompletedEventArgs.cs
- DependencyObjectType.cs
- SqlProfileProvider.cs
- InstancePersistenceEvent.cs
- InternalBufferOverflowException.cs
- DataGridViewRowsRemovedEventArgs.cs
- ToolStripPanel.cs
- TypeBuilderInstantiation.cs
- BitmapFrameEncode.cs
- FileLevelControlBuilderAttribute.cs
- WindowsPen.cs
- ControllableStoryboardAction.cs
- CultureTableRecord.cs
- QueryInterceptorAttribute.cs
- PassportPrincipal.cs
- PieceDirectory.cs
- DateTimeFormatInfoScanner.cs
- HostSecurityManager.cs
- ZipIORawDataFileBlock.cs
- TextElementEnumerator.cs
- ObjectComplexPropertyMapping.cs
- MimeTypeMapper.cs
- SqlInternalConnectionTds.cs
- PageSettings.cs
- HtmlTitle.cs
- QueryOperationResponseOfT.cs
- SqlStream.cs
- securitymgrsite.cs
- ConfigurationSectionGroup.cs
- CheckBoxStandardAdapter.cs
- GuidelineSet.cs
- BehaviorEditorPart.cs
- XamlClipboardData.cs
- ActiveXContainer.cs
- EasingFunctionBase.cs
- LayoutSettings.cs
- ViewStateModeByIdAttribute.cs
- TemplateComponentConnector.cs
- JsonGlobals.cs
- Invariant.cs
- OutputCacheModule.cs
- BooleanSwitch.cs
- SizeAnimationUsingKeyFrames.cs
- HeaderCollection.cs
- ReferentialConstraint.cs
- AddInController.cs
- ReadContentAsBinaryHelper.cs
- NameValueFileSectionHandler.cs
- ResizingMessageFilter.cs
- NameValueConfigurationElement.cs
- ConfigXmlWhitespace.cs
- Misc.cs
- DBDataPermissionAttribute.cs
- TimeoutValidationAttribute.cs
- CultureTableRecord.cs
- HtmlShimManager.cs
- xdrvalidator.cs
- HtmlElementEventArgs.cs
- WindowsClaimSet.cs
- NonVisualControlAttribute.cs
- Rotation3DKeyFrameCollection.cs
- NameValueFileSectionHandler.cs
- BitmapPalette.cs
- ColorConvertedBitmap.cs
- CompiledRegexRunnerFactory.cs
- RepeaterItemCollection.cs
- RtfNavigator.cs
- MsmqIntegrationChannelFactory.cs
- ShaderEffect.cs
- DiscardableAttribute.cs
- DeadCharTextComposition.cs
- ObjectManager.cs
- TouchPoint.cs
- ExpressionParser.cs
- AssertUtility.cs