Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConsoleCancelEventArgs.cs
- GroupByQueryOperator.cs
- AssemblyInfo.cs
- CounterCreationDataCollection.cs
- XmlSchemaIdentityConstraint.cs
- SqlRecordBuffer.cs
- ValueType.cs
- HelpOperationInvoker.cs
- RunInstallerAttribute.cs
- StrokeNode.cs
- GlyphRun.cs
- CommonDialog.cs
- Attribute.cs
- DirectoryObjectSecurity.cs
- HTMLTagNameToTypeMapper.cs
- JsonFormatGeneratorStatics.cs
- TypeUsageBuilder.cs
- AutomationEvent.cs
- EncoderExceptionFallback.cs
- ValuePattern.cs
- IERequestCache.cs
- HyperLinkField.cs
- DiscoveryDocument.cs
- AutomationElement.cs
- CodeComment.cs
- FunctionDefinition.cs
- WebPartsPersonalization.cs
- SchemaTableOptionalColumn.cs
- StandardRuntimeEnumValidatorAttribute.cs
- TextReader.cs
- TagPrefixCollection.cs
- CallSiteOps.cs
- SqlGenerator.cs
- LogRecordSequence.cs
- XmlDocumentFragment.cs
- Pen.cs
- ObjectDataSourceSelectingEventArgs.cs
- DescriptionAttribute.cs
- FilterException.cs
- InkCanvasFeedbackAdorner.cs
- String.cs
- TextPointerBase.cs
- RelationshipEnd.cs
- MetadataArtifactLoader.cs
- SplitContainer.cs
- DynamicDataManager.cs
- XmlCharacterData.cs
- CustomErrorsSection.cs
- ListViewItem.cs
- CqlParserHelpers.cs
- SchemaDeclBase.cs
- DataServiceRequestOfT.cs
- Point.cs
- XPathSingletonIterator.cs
- EdmSchemaAttribute.cs
- CompositeActivityMarkupSerializer.cs
- _OverlappedAsyncResult.cs
- XMLSyntaxException.cs
- PointConverter.cs
- XmlJsonReader.cs
- DecodeHelper.cs
- ConnectionManagementElementCollection.cs
- DocumentsTrace.cs
- ProviderConnectionPointCollection.cs
- TextRunCacheImp.cs
- ImageFormatConverter.cs
- ApplicationManager.cs
- KeyValueSerializer.cs
- SmtpNegotiateAuthenticationModule.cs
- TextFindEngine.cs
- CharacterBufferReference.cs
- SafeSystemMetrics.cs
- TimelineCollection.cs
- HeaderedContentControl.cs
- SecurityPermission.cs
- ViewUtilities.cs
- WindowProviderWrapper.cs
- WorkflowServiceHostFactory.cs
- ServiceDescriptionContext.cs
- WindowsEditBoxRange.cs
- mongolianshape.cs
- PagesChangedEventArgs.cs
- FormatException.cs
- PeerApplication.cs
- MobileRedirect.cs
- TimeIntervalCollection.cs
- ToolStripRenderer.cs
- MimeReturn.cs
- UriSection.cs
- RootBuilder.cs
- MetadataUtil.cs
- EnvironmentPermission.cs
- TypeUtil.cs
- LogManagementAsyncResult.cs
- WizardForm.cs
- CompositionTarget.cs
- TemplateBamlTreeBuilder.cs
- Bezier.cs
- IResourceProvider.cs
- PagesSection.cs