Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Net / System / Net / HttpSysSettings.cs / 1305376 / HttpSysSettings.cs
using System; using System.Diagnostics; using System.Text; using System.Collections.Generic; using System.Globalization; using System.Security.Permissions; using Microsoft.Win32; using System.IO; using System.Security; namespace System.Net { internal static class HttpSysSettings { private const string httpSysParametersKey = @"System\CurrentControlSet\Services\HTTP\Parameters"; private const bool enableNonUtf8Default = true; private const bool favorUtf8Default = true; private const string enableNonUtf8Name = "EnableNonUtf8"; private const string favorUtf8Name = "FavorUtf8"; private static bool enableNonUtf8; private static bool favorUtf8; static HttpSysSettings() { enableNonUtf8 = enableNonUtf8Default; favorUtf8 = favorUtf8Default; ReadHttpSysRegistrySettings(); } public static bool EnableNonUtf8 { get { return enableNonUtf8; } } public static bool FavorUtf8 { get { return favorUtf8; } } [RegistryPermission(SecurityAction.Assert, Read = @"HKEY_LOCAL_MACHINE\" + httpSysParametersKey)] private static void ReadHttpSysRegistrySettings() { try { RegistryKey httpSysParameters = Registry.LocalMachine.OpenSubKey(httpSysParametersKey); if (httpSysParameters == null) { LogWarning("ReadHttpSysRegistrySettings", SR.net_log_listener_httpsys_registry_null, httpSysParametersKey); } else { using (httpSysParameters) { enableNonUtf8 = ReadRegistryValue(httpSysParameters, enableNonUtf8Name, enableNonUtf8Default); favorUtf8 = ReadRegistryValue(httpSysParameters, favorUtf8Name, favorUtf8Default); } } } catch (SecurityException e) { LogRegistryException("ReadHttpSysRegistrySettings", e); } catch (ObjectDisposedException e) { LogRegistryException("ReadHttpSysRegistrySettings", e); } } private static bool ReadRegistryValue(RegistryKey key, string valueName, bool defaultValue) { Debug.Assert(key != null, "'key' must not be null"); try { // This check will throw an IOException if keyName doesn't exist. That's OK, we return the // default value. if (key.GetValueKind(valueName) == RegistryValueKind.DWord) { // At this point we know the Registry value exists and it must be valid (any DWORD value // can be converted to a bool). return Convert.ToBoolean(key.GetValue(valueName), CultureInfo.InvariantCulture); } } catch (UnauthorizedAccessException e) { LogRegistryException("ReadRegistryValue", e); } catch (IOException e) { LogRegistryException("ReadRegistryValue", e); } catch (SecurityException e) { LogRegistryException("ReadRegistryValue", e); } catch (ObjectDisposedException e) { LogRegistryException("ReadRegistryValue", e); } return defaultValue; } private static void LogRegistryException(string methodName, Exception e) { LogWarning(methodName, SR.net_log_listener_httpsys_registry_error, httpSysParametersKey, e); } private static void LogWarning(string methodName, string message, params object[] args) { if (Logging.On) { Logging.PrintWarning(Logging.HttpListener, typeof(HttpSysSettings), methodName, SR.GetString(message, args)); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Diagnostics; using System.Text; using System.Collections.Generic; using System.Globalization; using System.Security.Permissions; using Microsoft.Win32; using System.IO; using System.Security; namespace System.Net { internal static class HttpSysSettings { private const string httpSysParametersKey = @"System\CurrentControlSet\Services\HTTP\Parameters"; private const bool enableNonUtf8Default = true; private const bool favorUtf8Default = true; private const string enableNonUtf8Name = "EnableNonUtf8"; private const string favorUtf8Name = "FavorUtf8"; private static bool enableNonUtf8; private static bool favorUtf8; static HttpSysSettings() { enableNonUtf8 = enableNonUtf8Default; favorUtf8 = favorUtf8Default; ReadHttpSysRegistrySettings(); } public static bool EnableNonUtf8 { get { return enableNonUtf8; } } public static bool FavorUtf8 { get { return favorUtf8; } } [RegistryPermission(SecurityAction.Assert, Read = @"HKEY_LOCAL_MACHINE\" + httpSysParametersKey)] private static void ReadHttpSysRegistrySettings() { try { RegistryKey httpSysParameters = Registry.LocalMachine.OpenSubKey(httpSysParametersKey); if (httpSysParameters == null) { LogWarning("ReadHttpSysRegistrySettings", SR.net_log_listener_httpsys_registry_null, httpSysParametersKey); } else { using (httpSysParameters) { enableNonUtf8 = ReadRegistryValue(httpSysParameters, enableNonUtf8Name, enableNonUtf8Default); favorUtf8 = ReadRegistryValue(httpSysParameters, favorUtf8Name, favorUtf8Default); } } } catch (SecurityException e) { LogRegistryException("ReadHttpSysRegistrySettings", e); } catch (ObjectDisposedException e) { LogRegistryException("ReadHttpSysRegistrySettings", e); } } private static bool ReadRegistryValue(RegistryKey key, string valueName, bool defaultValue) { Debug.Assert(key != null, "'key' must not be null"); try { // This check will throw an IOException if keyName doesn't exist. That's OK, we return the // default value. if (key.GetValueKind(valueName) == RegistryValueKind.DWord) { // At this point we know the Registry value exists and it must be valid (any DWORD value // can be converted to a bool). return Convert.ToBoolean(key.GetValue(valueName), CultureInfo.InvariantCulture); } } catch (UnauthorizedAccessException e) { LogRegistryException("ReadRegistryValue", e); } catch (IOException e) { LogRegistryException("ReadRegistryValue", e); } catch (SecurityException e) { LogRegistryException("ReadRegistryValue", e); } catch (ObjectDisposedException e) { LogRegistryException("ReadRegistryValue", e); } return defaultValue; } private static void LogRegistryException(string methodName, Exception e) { LogWarning(methodName, SR.net_log_listener_httpsys_registry_error, httpSysParametersKey, e); } private static void LogWarning(string methodName, string message, params object[] args) { if (Logging.On) { Logging.PrintWarning(Logging.HttpListener, typeof(HttpSysSettings), methodName, SR.GetString(message, args)); } } } } // 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
- WebPartDescriptionCollection.cs
- Profiler.cs
- invalidudtexception.cs
- DecimalStorage.cs
- CrossSiteScriptingValidation.cs
- RuleCache.cs
- ScriptReferenceEventArgs.cs
- WindowsSlider.cs
- QuotedPrintableStream.cs
- Model3DGroup.cs
- SecurityTokenAttachmentMode.cs
- DataListComponentEditor.cs
- COM2ExtendedTypeConverter.cs
- EllipticalNodeOperations.cs
- ApplyTemplatesAction.cs
- entityreference_tresulttype.cs
- DeploymentExceptionMapper.cs
- HyperLinkField.cs
- DebuggerAttributes.cs
- TreeViewImageKeyConverter.cs
- ScheduleChanges.cs
- DataGridPagerStyle.cs
- ImageInfo.cs
- storepermission.cs
- AttachmentCollection.cs
- ApplicationContext.cs
- CompiledQuery.cs
- EntityDataSourceQueryBuilder.cs
- EnumConverter.cs
- WindowsListViewSubItem.cs
- Missing.cs
- Transactions.cs
- OleDbConnectionFactory.cs
- ListItemsCollectionEditor.cs
- BindingCollection.cs
- MenuStrip.cs
- RemotingHelper.cs
- UTF8Encoding.cs
- UrlRoutingHandler.cs
- SerializationException.cs
- BackgroundWorker.cs
- GridViewItemAutomationPeer.cs
- XmlSchemaValidator.cs
- PolyQuadraticBezierSegment.cs
- LayoutInformation.cs
- Page.cs
- MailAddressCollection.cs
- TableCell.cs
- WsatAdminException.cs
- HtmlInputReset.cs
- DataGridViewRowPostPaintEventArgs.cs
- ScriptControl.cs
- CompensationTokenData.cs
- ApplicationTrust.cs
- HttpRuntime.cs
- DialogResultConverter.cs
- Environment.cs
- ReadWriteControlDesigner.cs
- AlternateViewCollection.cs
- SwitchAttribute.cs
- HScrollBar.cs
- SettingsBindableAttribute.cs
- ClientTarget.cs
- DebugController.cs
- BooleanProjectedSlot.cs
- List.cs
- FocusTracker.cs
- InvokeHandlers.cs
- TemplateControlBuildProvider.cs
- Avt.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- FileInfo.cs
- GetCryptoTransformRequest.cs
- DataGridSortCommandEventArgs.cs
- CqlIdentifiers.cs
- XmlSchemaInclude.cs
- KeyMatchBuilder.cs
- DataRelationCollection.cs
- KnownTypes.cs
- GridErrorDlg.cs
- TransformGroup.cs
- TableLayoutPanelCellPosition.cs
- WebPartTransformer.cs
- SecurityHeader.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- arclist.cs
- XmlSchemaSimpleType.cs
- GroupQuery.cs
- StaticExtensionConverter.cs
- ValidationErrorCollection.cs
- CheckPair.cs
- GetPageCompletedEventArgs.cs
- ListSortDescription.cs
- ProxyHwnd.cs
- querybuilder.cs
- XhtmlConformanceSection.cs
- DropTarget.cs
- ContainsSearchOperator.cs
- DateTimeFormat.cs
- WindowsRebar.cs