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
- FixedPageAutomationPeer.cs
- InplaceBitmapMetadataWriter.cs
- CustomAttributeFormatException.cs
- BinaryWriter.cs
- DataBindingHandlerAttribute.cs
- HandlerMappingMemo.cs
- SqlCaseSimplifier.cs
- ImageMetadata.cs
- TransportConfigurationTypeElement.cs
- SortQuery.cs
- UshortList2.cs
- DataRowComparer.cs
- ImpersonateTokenRef.cs
- DrawingAttributeSerializer.cs
- QueryGenerator.cs
- XPathAxisIterator.cs
- XmlSchemaParticle.cs
- Atom10FormatterFactory.cs
- EditorPartChrome.cs
- VScrollBar.cs
- Visual3DCollection.cs
- EntityCommandCompilationException.cs
- ToolStripItemCollection.cs
- ImportCatalogPart.cs
- BufferAllocator.cs
- Animatable.cs
- ValueChangedEventManager.cs
- SystemResources.cs
- Encoder.cs
- TriggerActionCollection.cs
- SqlTriggerContext.cs
- SchemaAttDef.cs
- Utils.cs
- ObjectStateManager.cs
- DbSetClause.cs
- DataRow.cs
- TableRowCollection.cs
- BuiltInExpr.cs
- GridViewRow.cs
- RC2.cs
- _LoggingObject.cs
- InkCanvasAutomationPeer.cs
- Compiler.cs
- ToolStripLocationCancelEventArgs.cs
- LinqDataSourceHelper.cs
- ReadOnlyNameValueCollection.cs
- ThemeInfoAttribute.cs
- AssemblyResourceLoader.cs
- WebBrowsableAttribute.cs
- EntityRecordInfo.cs
- EventEntry.cs
- InfoCardProofToken.cs
- LineMetrics.cs
- GridViewRowEventArgs.cs
- MailBnfHelper.cs
- BindingExpressionUncommonField.cs
- DataServiceKeyAttribute.cs
- FieldCollectionEditor.cs
- XmlChoiceIdentifierAttribute.cs
- GridProviderWrapper.cs
- ConnectionsZoneDesigner.cs
- BaseDataBoundControl.cs
- ArcSegment.cs
- EditorPartCollection.cs
- IssuanceTokenProviderBase.cs
- ServiceX509SecurityTokenProvider.cs
- EventRouteFactory.cs
- DataAdapter.cs
- ProviderBase.cs
- Permission.cs
- HostProtectionPermission.cs
- EntityDataSourceDataSelection.cs
- Dynamic.cs
- DateTimeParse.cs
- HtmlWindow.cs
- FileVersionInfo.cs
- StyleConverter.cs
- UInt16Storage.cs
- AssemblyBuilderData.cs
- SerializationEventsCache.cs
- ReturnValue.cs
- AssemblyCacheEntry.cs
- JsonStringDataContract.cs
- BinaryFormatterSinks.cs
- DrawingState.cs
- AnnotationResourceCollection.cs
- StreamInfo.cs
- StructuredTypeEmitter.cs
- Context.cs
- GeneralTransformCollection.cs
- XmlSchemaComplexContent.cs
- ValidationManager.cs
- ApplicationId.cs
- MarkupExtensionReturnTypeAttribute.cs
- FunctionParameter.cs
- WindowsListViewItem.cs
- ZipFileInfo.cs
- ScriptControlDescriptor.cs
- CodeSnippetExpression.cs
- FixedSOMLineRanges.cs