Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / _WinHttpWebProxyDataBuilder.cs / 1305376 / _WinHttpWebProxyDataBuilder.cs
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; namespace System.Net { internal sealed class WinHttpWebProxyBuilder : WebProxyDataBuilder { protected override void BuildInternal() { GlobalLog.Enter("WinHttpWebProxyBuilder#" + ValidationHelper.HashString(this) + "::BuildInternal()"); UnsafeNclNativeMethods.WinHttp.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ieProxyConfig = new UnsafeNclNativeMethods.WinHttp.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG(); // Make sure the native strings get freed, even if some unexpected exception occurs. RuntimeHelpers.PrepareConstrainedRegions(); try { if (UnsafeNclNativeMethods.WinHttp.WinHttpGetIEProxyConfigForCurrentUser(ref ieProxyConfig)) { string proxy = null; string proxyByPass = null; string autoConfigUrl = null; proxy = Marshal.PtrToStringUni(ieProxyConfig.Proxy); proxyByPass = Marshal.PtrToStringUni(ieProxyConfig.ProxyBypass); autoConfigUrl = Marshal.PtrToStringUni(ieProxyConfig.AutoConfigUrl); // note that ieProxyConfig.Proxy will be null if "use a proxy server" flag is turned off, even if // the user specified a proxy address. When we read directly from the Registry we need to check // for ProxyTypeFlags.PROXY_TYPE_PROXY. WinHttp does this for us and if the flag is not set, // ieProxyConfig.Proxy will be null. SetProxyAndBypassList(proxy, proxyByPass); SetAutoDetectSettings(ieProxyConfig.AutoDetect); // similar to comment above: ieProxyConfig.AutoConfigUrl will only be set if "automatically detect // settings" flag is set. We don't need to check ProxyTypeFlags.PROXY_TYPE_AUTO_PROXY_URL; WinHttp // takes care of it and sets AutoConfigUrl to null if the flag is not set, regardless of the actual // config script string. SetAutoProxyUrl(autoConfigUrl); } else { int errorCode = Marshal.GetLastWin32Error(); if (errorCode == Microsoft.Win32.NativeMethods.ERROR_NOT_ENOUGH_MEMORY) { throw new OutOfMemoryException(); } // if API call fails, rely on automatic detection SetAutoDetectSettings(true); } } finally { Marshal.FreeHGlobal(ieProxyConfig.Proxy); Marshal.FreeHGlobal(ieProxyConfig.ProxyBypass); Marshal.FreeHGlobal(ieProxyConfig.AutoConfigUrl); } GlobalLog.Leave("WinHttpWebProxyBuilder#" + ValidationHelper.HashString(this) + "::BuildInternal()"); } } } // 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
- XmlSecureResolver.cs
- HttpModuleActionCollection.cs
- Bitmap.cs
- RegistryConfigurationProvider.cs
- FontStyles.cs
- FirstMatchCodeGroup.cs
- LineServicesCallbacks.cs
- CodeExpressionCollection.cs
- RootNamespaceAttribute.cs
- InvokeBase.cs
- sqlstateclientmanager.cs
- ResourceIDHelper.cs
- HandlerFactoryWrapper.cs
- DynamicMethod.cs
- ThreadExceptionEvent.cs
- ProfileGroupSettingsCollection.cs
- EnumValidator.cs
- InternalMappingException.cs
- DataProtection.cs
- BStrWrapper.cs
- SocketElement.cs
- CultureTableRecord.cs
- DataException.cs
- StatusStrip.cs
- SoapReflector.cs
- OdbcFactory.cs
- StringValueSerializer.cs
- FrameworkElement.cs
- SynchronizedPool.cs
- IndexerNameAttribute.cs
- QueryHandler.cs
- Timer.cs
- TextEndOfLine.cs
- QilFunction.cs
- CodeConstructor.cs
- TagPrefixCollection.cs
- TimeManager.cs
- Matrix3DConverter.cs
- BamlBinaryWriter.cs
- HttpCookie.cs
- MetadataImporter.cs
- ValidatorUtils.cs
- DuplicateContext.cs
- X509RawDataKeyIdentifierClause.cs
- GeometryCombineModeValidation.cs
- SuppressMergeCheckAttribute.cs
- PathFigure.cs
- PermissionSetEnumerator.cs
- MD5CryptoServiceProvider.cs
- RenamedEventArgs.cs
- TrackingParameters.cs
- NGCUIElementCollectionSerializerAsync.cs
- EnvironmentPermission.cs
- MouseOverProperty.cs
- LinqExpressionNormalizer.cs
- MsmqMessageProperty.cs
- TypeSystemProvider.cs
- MatrixConverter.cs
- XmlIgnoreAttribute.cs
- SafeSerializationManager.cs
- SqlDataSourceCommandEventArgs.cs
- Base64Decoder.cs
- AnnotationComponentChooser.cs
- SqlCommand.cs
- HttpHeaderCollection.cs
- CopyNamespacesAction.cs
- ProxyWebPartConnectionCollection.cs
- FunctionImportElement.cs
- User.cs
- ModelUIElement3D.cs
- SelectManyQueryOperator.cs
- MultipleCopiesCollection.cs
- WsdlInspector.cs
- DateTimeOffset.cs
- VirtualPath.cs
- SiteMapDataSourceView.cs
- HtmlInputReset.cs
- ConfigDefinitionUpdates.cs
- EpmHelper.cs
- Avt.cs
- MatrixUtil.cs
- SafeUserTokenHandle.cs
- HttpAsyncResult.cs
- BitConverter.cs
- QueryOptionExpression.cs
- printdlgexmarshaler.cs
- Point4DConverter.cs
- FixUpCollection.cs
- SeverityFilter.cs
- AppDomainAttributes.cs
- ObjectViewFactory.cs
- XmlCDATASection.cs
- NativeMethods.cs
- InputLangChangeEvent.cs
- SocketStream.cs
- DesignBindingConverter.cs
- BasicExpandProvider.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- HeaderedItemsControl.cs
- Vector3DValueSerializer.cs