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
- Block.cs
- _HTTPDateParse.cs
- DoubleAnimationBase.cs
- IDReferencePropertyAttribute.cs
- DocumentXmlWriter.cs
- PropertyMapper.cs
- TextTreeTextElementNode.cs
- DesignSurfaceEvent.cs
- SystemColorTracker.cs
- MachineKeySection.cs
- IFlowDocumentViewer.cs
- XmlSchemaGroupRef.cs
- XmlSequenceWriter.cs
- BufferModesCollection.cs
- IndexOutOfRangeException.cs
- RegionInfo.cs
- BufferedReceiveElement.cs
- BindingEntityInfo.cs
- DataGridViewMethods.cs
- Freezable.cs
- WebPartAuthorizationEventArgs.cs
- ProgressBar.cs
- UInt16.cs
- AdapterUtil.cs
- DropTarget.cs
- WebPartDisplayModeCancelEventArgs.cs
- DataObjectPastingEventArgs.cs
- SqlDataSourceAdvancedOptionsForm.cs
- AutoGeneratedField.cs
- HtmlTableRowCollection.cs
- ArcSegment.cs
- TemplateXamlParser.cs
- ConnectionPoint.cs
- RectangleConverter.cs
- AnnotationHighlightLayer.cs
- FontInfo.cs
- FormatException.cs
- KeyInfo.cs
- NavigationProperty.cs
- AdRotator.cs
- IResourceProvider.cs
- JsonXmlDataContract.cs
- HighlightVisual.cs
- CardSpacePolicyElement.cs
- ToolStripItemImageRenderEventArgs.cs
- UnknownBitmapDecoder.cs
- XmlIlTypeHelper.cs
- Directory.cs
- XmlSigningNodeWriter.cs
- WhiteSpaceTrimStringConverter.cs
- TraceUtility.cs
- ClientTarget.cs
- BamlLocalizabilityResolver.cs
- HtmlTable.cs
- ApplicationGesture.cs
- ChangesetResponse.cs
- RSAPKCS1SignatureDeformatter.cs
- CanonicalXml.cs
- XsdCachingReader.cs
- HttpHandlerAction.cs
- CommandLibraryHelper.cs
- MetaColumn.cs
- TransformerInfoCollection.cs
- CustomTypeDescriptor.cs
- OutgoingWebResponseContext.cs
- SchemaNotation.cs
- XamlToRtfWriter.cs
- StaticTextPointer.cs
- ChtmlLinkAdapter.cs
- TraceUtility.cs
- SafeEventLogReadHandle.cs
- KeyInstance.cs
- Switch.cs
- EventBuilder.cs
- VarRemapper.cs
- MultipartIdentifier.cs
- PersonalizationDictionary.cs
- AnimationClock.cs
- CompilerCollection.cs
- HandlerBase.cs
- DataGridViewDataErrorEventArgs.cs
- Types.cs
- SafeFileMappingHandle.cs
- SpeakProgressEventArgs.cs
- HuffmanTree.cs
- ComponentManagerBroker.cs
- HttpStreamXmlDictionaryWriter.cs
- ComboBox.cs
- uribuilder.cs
- Clock.cs
- ListBoxAutomationPeer.cs
- ControlCollection.cs
- WebServiceMethodData.cs
- XmlSchemaCompilationSettings.cs
- GridViewItemAutomationPeer.cs
- IdnMapping.cs
- HtmlWindow.cs
- DocumentPageHost.cs
- PagerSettings.cs
- LineGeometry.cs