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
- FlowDocumentReaderAutomationPeer.cs
- DataGridCellEditEndingEventArgs.cs
- Funcletizer.cs
- RuleInfoComparer.cs
- SoapElementAttribute.cs
- ProviderConnectionPoint.cs
- dsa.cs
- wgx_render.cs
- SoapEnumAttribute.cs
- RepeatButton.cs
- GridLengthConverter.cs
- BatchParser.cs
- TypographyProperties.cs
- WebPartConnectionsCancelEventArgs.cs
- SafeBitVector32.cs
- Configuration.cs
- Properties.cs
- RelationshipEndMember.cs
- DataGridViewTextBoxEditingControl.cs
- XmlCollation.cs
- KeySpline.cs
- RegistryPermission.cs
- InheritanceContextHelper.cs
- SignedPkcs7.cs
- RequestQueryProcessor.cs
- Automation.cs
- HGlobalSafeHandle.cs
- __ConsoleStream.cs
- ToolStripMenuItem.cs
- EntityContainerEmitter.cs
- CategoryGridEntry.cs
- QueryCacheManager.cs
- OleDbReferenceCollection.cs
- DesignerView.cs
- FramingChannels.cs
- SmiRecordBuffer.cs
- FirstMatchCodeGroup.cs
- CfgSemanticTag.cs
- UnsafeNativeMethodsMilCoreApi.cs
- TextTreePropertyUndoUnit.cs
- XslTransformFileEditor.cs
- DocumentViewerAutomationPeer.cs
- OleDbPropertySetGuid.cs
- DrawTreeNodeEventArgs.cs
- ExtenderProvidedPropertyAttribute.cs
- KeyGesture.cs
- IPEndPointCollection.cs
- ACE.cs
- UserUseLicenseDictionaryLoader.cs
- HMACRIPEMD160.cs
- SharedConnectionWorkflowTransactionService.cs
- Roles.cs
- GroupQuery.cs
- SqlBuilder.cs
- BitmapVisualManager.cs
- Pair.cs
- BamlTreeMap.cs
- OleDbConnectionInternal.cs
- SqlProcedureAttribute.cs
- RuleValidation.cs
- userdatakeys.cs
- VerticalAlignConverter.cs
- ProviderSettings.cs
- Timer.cs
- CodeEventReferenceExpression.cs
- PrintPreviewControl.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- DbDataReader.cs
- CheckPair.cs
- FastPropertyAccessor.cs
- TemplateBindingExtensionConverter.cs
- Crc32Helper.cs
- DropSource.cs
- DataGridColumnStyleMappingNameEditor.cs
- AsyncOperation.cs
- RenderOptions.cs
- SettingsBase.cs
- FixedSOMSemanticBox.cs
- HttpGetProtocolReflector.cs
- WindowsStatusBar.cs
- ReadOnlyTernaryTree.cs
- Group.cs
- uribuilder.cs
- EntityPropertyMappingAttribute.cs
- AdapterUtil.cs
- ScriptMethodAttribute.cs
- ListView.cs
- FrameAutomationPeer.cs
- ClientScriptManagerWrapper.cs
- RandomNumberGenerator.cs
- BitmapEditor.cs
- XpsInterleavingPolicy.cs
- ToolStripCollectionEditor.cs
- Adorner.cs
- XPathBuilder.cs
- CookielessHelper.cs
- TransformedBitmap.cs
- InvalidDataException.cs
- TemplatedMailWebEventProvider.cs
- WebPartsSection.cs