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
- PerformanceCountersElement.cs
- DataGridViewCellStyleConverter.cs
- CriticalFinalizerObject.cs
- DesignTimeDataBinding.cs
- FileSystemInfo.cs
- ITextView.cs
- AutomationElementCollection.cs
- ThaiBuddhistCalendar.cs
- ConfigViewGenerator.cs
- UserControlDocumentDesigner.cs
- SerializationSectionGroup.cs
- TokenizerHelper.cs
- SystemKeyConverter.cs
- ResourceReferenceKeyNotFoundException.cs
- CodePrimitiveExpression.cs
- VirtualPathProvider.cs
- Helpers.cs
- CompositionTarget.cs
- SHA384Managed.cs
- DetailsViewUpdateEventArgs.cs
- Accessors.cs
- XmlIlGenerator.cs
- QilParameter.cs
- IdentityModelDictionary.cs
- RectAnimationUsingKeyFrames.cs
- FileRecordSequenceHelper.cs
- CancelEventArgs.cs
- NativeMethods.cs
- TemplatePropertyEntry.cs
- SafeSecurityHelper.cs
- Encoder.cs
- ContourSegment.cs
- HMACSHA512.cs
- DataTablePropertyDescriptor.cs
- RtfToXamlReader.cs
- SystemFonts.cs
- DeadCharTextComposition.cs
- NullableDecimalAverageAggregationOperator.cs
- TextEffect.cs
- ConfigurationSection.cs
- PageSetupDialog.cs
- ListParagraph.cs
- Queue.cs
- MouseGestureValueSerializer.cs
- RtfControls.cs
- EntityDataSourceSelectingEventArgs.cs
- SnapshotChangeTrackingStrategy.cs
- ThemeDictionaryExtension.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- InfoCardCryptoHelper.cs
- DataQuery.cs
- remotingproxy.cs
- NamedPipeChannelListener.cs
- TypeElement.cs
- WebPartManager.cs
- SchemaImporterExtensionElementCollection.cs
- AppDomainFactory.cs
- CharacterShapingProperties.cs
- JoinSymbol.cs
- HtmlHead.cs
- ElementsClipboardData.cs
- PrintDocument.cs
- ToolStripPanelRow.cs
- RenderCapability.cs
- XMLUtil.cs
- BamlTreeNode.cs
- httpapplicationstate.cs
- VersionValidator.cs
- X509IssuerSerialKeyIdentifierClause.cs
- ServerIdentity.cs
- OleDbConnection.cs
- ConditionCollection.cs
- QuarticEase.cs
- FontWeight.cs
- ZoneIdentityPermission.cs
- Splitter.cs
- ValidationVisibilityAttribute.cs
- AdapterUtil.cs
- RayMeshGeometry3DHitTestResult.cs
- DataPagerFieldCollection.cs
- ImageFormat.cs
- XamlWriter.cs
- SecurityKeyIdentifier.cs
- TCPListener.cs
- XmlAttributeHolder.cs
- EntityAdapter.cs
- EntityTypeEmitter.cs
- StringSorter.cs
- SQLDateTimeStorage.cs
- cookiecontainer.cs
- SerializationException.cs
- MostlySingletonList.cs
- TreeWalkHelper.cs
- VectorConverter.cs
- XmlSiteMapProvider.cs
- GiveFeedbackEventArgs.cs
- Win32.cs
- EncodingInfo.cs
- FormsIdentity.cs
- RolePrincipal.cs