Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / GlobalizationSection.cs / 3 / GlobalizationSection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Threading;
using System.Globalization;
using System.Web.Util;
using System.Security.Permissions;
/*
*/
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class GlobalizationSection : ConfigurationSection {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propRequestEncoding =
new ConfigurationProperty("requestEncoding", typeof(string), Encoding.UTF8.WebName, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propResponseEncoding =
new ConfigurationProperty("responseEncoding", typeof(string), Encoding.UTF8.WebName, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propFileEncoding =
new ConfigurationProperty("fileEncoding", typeof(string), String.Empty, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propCulture =
new ConfigurationProperty("culture", typeof(string), String.Empty, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propUICulture =
new ConfigurationProperty("uiCulture", typeof(string), String.Empty, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propEnableClientBasedCulture =
new ConfigurationProperty("enableClientBasedCulture", typeof(bool), false, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propResponseHeaderEncoding =
new ConfigurationProperty("responseHeaderEncoding", typeof(string), Encoding.UTF8.WebName, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propResourceProviderFactoryType =
new ConfigurationProperty("resourceProviderFactoryType", typeof(string), String.Empty, ConfigurationPropertyOptions.None);
private static readonly ConfigurationProperty _propEnableBestFitResponseEncoding =
new ConfigurationProperty("enableBestFitResponseEncoding", typeof(bool), false, ConfigurationPropertyOptions.None);
private Encoding responseEncodingCache = null;
private Encoding responseHeaderEncodingCache = null;
private Encoding requestEncodingCache = null;
private Encoding fileEncodingCache = null;
private String cultureCache = null;
private String uiCultureCache = null;
private Type _resourceProviderFactoryType;
static GlobalizationSection() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propRequestEncoding);
_properties.Add(_propResponseEncoding);
_properties.Add(_propFileEncoding);
_properties.Add(_propCulture);
_properties.Add(_propUICulture);
_properties.Add(_propEnableClientBasedCulture);
_properties.Add(_propResponseHeaderEncoding);
_properties.Add(_propResourceProviderFactoryType);
_properties.Add(_propEnableBestFitResponseEncoding);
}
public GlobalizationSection() {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("requestEncoding", DefaultValue = "utf-8")]
public Encoding RequestEncoding {
get {
if (requestEncodingCache == null) {
requestEncodingCache = Encoding.UTF8;
}
return requestEncodingCache;
}
set {
if (value != null) {
base[_propRequestEncoding] = value.WebName;
requestEncodingCache = value;
}
else {
base[_propRequestEncoding] = value;
requestEncodingCache = Encoding.UTF8;
}
}
}
[ConfigurationProperty("responseEncoding", DefaultValue = "utf-8")]
public Encoding ResponseEncoding {
get {
if (responseEncodingCache == null)
responseEncodingCache = Encoding.UTF8;
return responseEncodingCache;
}
set {
if (value != null) {
base[_propResponseEncoding] = value.WebName;
responseEncodingCache = value;
}
else {
base[_propResponseEncoding] = value;
responseEncodingCache = Encoding.UTF8;
}
}
}
[ConfigurationProperty("responseHeaderEncoding", DefaultValue = "utf-8")]
public Encoding ResponseHeaderEncoding {
get {
if (responseHeaderEncodingCache == null) {
responseHeaderEncodingCache = Encoding.UTF8;
}
return responseHeaderEncodingCache;
}
set {
if (value != null) {
base[_propResponseHeaderEncoding] = value.WebName;
responseHeaderEncodingCache = value;
}
else {
base[_propResponseHeaderEncoding] = value;
responseHeaderEncodingCache = Encoding.UTF8;
}
}
}
[ConfigurationProperty("fileEncoding")]
public Encoding FileEncoding {
get {
if (fileEncodingCache == null) {
fileEncodingCache = Encoding.Default;
}
return fileEncodingCache;
}
set {
if (value != null) {
base[_propFileEncoding] = value.WebName;
fileEncodingCache = value;
}
else {
base[_propFileEncoding] = value;
fileEncodingCache = Encoding.Default;
}
}
}
[ConfigurationProperty("culture", DefaultValue = "")]
public string Culture {
get {
if (cultureCache == null) {
cultureCache = (string)base[_propCulture];
}
return cultureCache;
}
set {
base[_propCulture] = value;
cultureCache = value;
}
}
[ConfigurationProperty("uiCulture", DefaultValue = "")]
public string UICulture {
get {
if (uiCultureCache == null) {
uiCultureCache = (string)base[_propUICulture];
}
return uiCultureCache;
}
set {
base[_propUICulture] = value;
uiCultureCache = value;
}
}
[ConfigurationProperty("enableClientBasedCulture", DefaultValue = false)]
public bool EnableClientBasedCulture {
get {
return (bool)base[_propEnableClientBasedCulture];
}
set {
base[_propEnableClientBasedCulture] = value;
}
}
[ConfigurationProperty("resourceProviderFactoryType", DefaultValue = "")]
public string ResourceProviderFactoryType {
get {
return (string)base[_propResourceProviderFactoryType];
}
set {
base[_propResourceProviderFactoryType] = value;
}
}
[ConfigurationProperty("enableBestFitResponseEncoding", DefaultValue = false)]
public bool EnableBestFitResponseEncoding {
get {
return (bool)base[_propEnableBestFitResponseEncoding];
}
set {
base[_propEnableBestFitResponseEncoding] = value;
}
}
internal Type ResourceProviderFactoryTypeInternal {
get {
if (_resourceProviderFactoryType == null && !String.IsNullOrEmpty(ResourceProviderFactoryType)) {
lock (this) {
if (_resourceProviderFactoryType == null) {
Type resourceProviderFactoryType = ConfigUtil.GetType(ResourceProviderFactoryType, "resourceProviderFactoryType", this);
ConfigUtil.CheckBaseType(typeof(System.Web.Compilation.ResourceProviderFactory), resourceProviderFactoryType, "resourceProviderFactoryType", this);
_resourceProviderFactoryType = resourceProviderFactoryType;
}
}
}
return _resourceProviderFactoryType;
}
}
private void CheckCulture(string configCulture) {
if (StringUtil.EqualsIgnoreCase(configCulture, HttpApplication.AutoCulture)) {
return;
}
else if (StringUtil.StringStartsWithIgnoreCase(configCulture, HttpApplication.AutoCulture)) {
// This will throw if bad
CultureInfo dummyCultureInfo = new CultureInfo(configCulture.Substring(5));
return;
}
// This will throw if bad
new CultureInfo(configCulture);
}
protected override void PreSerialize(XmlWriter writer) {
PostDeserialize();
}
protected override void PostDeserialize() {
ConfigurationPropertyCollection props = Properties;
// Need to
ConfigurationProperty errorProperty = null;
int errorLine = Int32.MaxValue;
try {
if (!String.IsNullOrEmpty((string)base[_propResponseEncoding]))
responseEncodingCache = (Encoding)Encoding.GetEncoding((string)base[_propResponseEncoding]);
}
catch {
errorProperty = _propResponseEncoding;
errorLine = ElementInformation.Properties[errorProperty.Name].LineNumber;
}
try {
if (!String.IsNullOrEmpty((string)base[_propResponseHeaderEncoding])) {
responseHeaderEncodingCache = (Encoding)Encoding.GetEncoding((string)base[_propResponseHeaderEncoding]);
}
}
catch {
if (errorLine > ElementInformation.Properties[_propResponseHeaderEncoding.Name].LineNumber) {
errorProperty = _propResponseHeaderEncoding;
errorLine = ElementInformation.Properties[errorProperty.Name].LineNumber;
}
}
try {
if (!String.IsNullOrEmpty((string)base[_propRequestEncoding])) {
requestEncodingCache = (Encoding)Encoding.GetEncoding((string)base[_propRequestEncoding]);
}
}
catch {
if (errorLine > ElementInformation.Properties[_propRequestEncoding.Name].LineNumber) {
errorProperty = _propRequestEncoding;
errorLine = ElementInformation.Properties[errorProperty.Name].LineNumber;
}
}
try {
if (!String.IsNullOrEmpty((string)base[_propFileEncoding])) {
fileEncodingCache = (Encoding)Encoding.GetEncoding((string)base[_propFileEncoding]);
}
}
catch {
if (errorLine > ElementInformation.Properties[_propFileEncoding.Name].LineNumber) {
errorProperty = _propFileEncoding;
errorLine = ElementInformation.Properties[errorProperty.Name].LineNumber;
}
}
try {
if (!String.IsNullOrEmpty((string)base[_propCulture])) {
CheckCulture((string)base[_propCulture]);
}
}
catch {
if (errorLine > ElementInformation.Properties[_propCulture.Name].LineNumber) {
errorProperty = _propCulture;
errorLine = ElementInformation.Properties[_propCulture.Name].LineNumber;
}
}
try {
if (!String.IsNullOrEmpty((string)base[_propUICulture])) {
CheckCulture((string)base[_propUICulture]);
}
}
catch {
if (errorLine > ElementInformation.Properties[_propUICulture.Name].LineNumber) {
errorProperty = _propUICulture;
errorLine = ElementInformation.Properties[_propUICulture.Name].LineNumber;
}
}
if (errorProperty != null) {
throw new ConfigurationErrorsException(SR.GetString(SR.Invalid_value_for_globalization_attr, errorProperty.Name),
ElementInformation.Properties[errorProperty.Name].Source, ElementInformation.Properties[errorProperty.Name].LineNumber);
}
}
}
}
// 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
- WebPartEditorOkVerb.cs
- DataRecordInternal.cs
- KnownColorTable.cs
- OleDbWrapper.cs
- LicenseManager.cs
- WebBrowserDocumentCompletedEventHandler.cs
- MenuItem.cs
- XamlPointCollectionSerializer.cs
- MSAANativeProvider.cs
- SelectedPathEditor.cs
- HealthMonitoringSection.cs
- Focus.cs
- SupportsEventValidationAttribute.cs
- DocumentGrid.cs
- ConfigurationSectionGroupCollection.cs
- FixedSOMContainer.cs
- SchemaEntity.cs
- ClientScriptManagerWrapper.cs
- ExpressionHelper.cs
- LinqDataSourceDeleteEventArgs.cs
- BoolExpr.cs
- FontConverter.cs
- Single.cs
- OdbcUtils.cs
- XmlSignatureManifest.cs
- XpsFilter.cs
- BamlMapTable.cs
- ColumnWidthChangingEvent.cs
- DataRelation.cs
- XsdBuilder.cs
- ReadWriteSpinLock.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- RemoteWebConfigurationHost.cs
- SchemaInfo.cs
- ManagementClass.cs
- SoapSchemaMember.cs
- WebPartMenu.cs
- XamlSerializerUtil.cs
- KeyValuePairs.cs
- Rijndael.cs
- ConditionalAttribute.cs
- UnSafeCharBuffer.cs
- BackgroundWorker.cs
- AudioStateChangedEventArgs.cs
- OrderedHashRepartitionStream.cs
- AndMessageFilter.cs
- ComplexType.cs
- ExpressionCopier.cs
- OracleCommandSet.cs
- TabOrder.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- ListDictionaryInternal.cs
- TextDecorationLocationValidation.cs
- HMACRIPEMD160.cs
- WorkflowDesignerMessageFilter.cs
- DbConnectionPool.cs
- SessionStateItemCollection.cs
- FieldToken.cs
- CodeChecksumPragma.cs
- PingReply.cs
- OpacityConverter.cs
- RegexCaptureCollection.cs
- IsolatedStorageFileStream.cs
- CodeTypeMember.cs
- NetworkInterface.cs
- PersonalizationEntry.cs
- MachineKey.cs
- DrawingImage.cs
- OAVariantLib.cs
- IdentityNotMappedException.cs
- Calendar.cs
- XamlContextStack.cs
- MultipartContentParser.cs
- HierarchicalDataSourceControl.cs
- ConfigurationManager.cs
- UpdateCommand.cs
- TableItemStyle.cs
- XPathQilFactory.cs
- RoleManagerEventArgs.cs
- XmlSchemaComplexType.cs
- Pool.cs
- ToolStripArrowRenderEventArgs.cs
- CursorConverter.cs
- WmlLinkAdapter.cs
- SQLResource.cs
- MultipartIdentifier.cs
- DataBindingHandlerAttribute.cs
- XslVisitor.cs
- Thickness.cs
- TagPrefixCollection.cs
- XmlILConstructAnalyzer.cs
- LZCodec.cs
- DBConcurrencyException.cs
- DispatcherHookEventArgs.cs
- MutexSecurity.cs
- Propagator.Evaluator.cs
- BindingExpressionBase.cs
- PopupEventArgs.cs
- Point4DConverter.cs
- XmlEntity.cs