Kaynağa Gözat

2006-01-26 Chris Toshok <[email protected]>

	* WebEncoding.cs: rework this so we cache the section, and so we
	swallow exceptions based on a broken configuration.


svn path=/trunk/mcs/; revision=56139
Chris Toshok 20 yıl önce
ebeveyn
işleme
ea6f2c5659

+ 5 - 0
mcs/class/System.Web/System.Web.Util/ChangeLog

@@ -1,3 +1,8 @@
+2006-01-26  Chris Toshok  <[email protected]>
+
+	* WebEncoding.cs: rework this so we cache the section, and so we
+	swallow exceptions based on a broken configuration.
+
 2006-01-09  Konstantin Triger <[email protected]>
 
 	AltSerialization.cs: under TARGET_JVM: merging /main/4

+ 24 - 24
mcs/class/System.Web/System.Web.Util/WebEncoding.cs

@@ -36,44 +36,44 @@ namespace System.Web.Util
 {
 	internal class WebEncoding
 	{
-		static public Encoding FileEncoding {
-			get {
 #if CONFIGURATION_2_0
-				GlobalizationSection gc = (GlobalizationSection) WebConfigurationManager.GetWebApplicationSection ("system.web/globalization");
+		static bool cached;
+		static GlobalizationSection sect;
+		static GlobalizationSection GlobalizationConfig {
+			get {
+				if (!cached) {
+					try {
+						sect = (GlobalizationSection) WebConfigurationManager.GetWebApplicationSection ("system.web/globalization");
+					}
+					catch { }
+					cached = true;
+				}
+				return sect;
+			}
+		}
 #else
-				GlobalizationConfiguration gc = GlobalizationConfiguration.GetInstance (null);
-				if (gc == null)
-					return Encoding.Default;
+		static GlobalizationConfiguration GlobalizationConfig {
+			get {
+				return GlobalizationConfiguration.GetInstance (null);
+			}
+		}
 #endif
 
-				return gc.FileEncoding;
+		static public Encoding FileEncoding {
+			get {
+				return GlobalizationConfig != null ? GlobalizationConfig.FileEncoding : Encoding.Default;
 			}
 		}
 
 		static public Encoding ResponseEncoding {
 			get {
-#if CONFIGURATION_2_0
-				GlobalizationSection gc = (GlobalizationSection) WebConfigurationManager.GetWebApplicationSection ("system.web/globalization");
-#else
-				GlobalizationConfiguration gc = GlobalizationConfiguration.GetInstance (null);
-				if (gc == null)
-					return Encoding.Default;
-#endif
-
-				return gc.ResponseEncoding;
+				return GlobalizationConfig != null ? GlobalizationConfig.ResponseEncoding : Encoding.Default;
 			}
 		}
 
 		static public Encoding RequestEncoding {
 			get {
-#if CONFIGURATION_2_0
-				GlobalizationSection gc = (GlobalizationSection) WebConfigurationManager.GetWebApplicationSection ("system.web/globalization");
-#else
-				GlobalizationConfiguration gc = GlobalizationConfiguration.GetInstance (null);
-				if (gc == null)
-					return Encoding.Default;
-#endif
-				return gc.RequestEncoding;
+				return GlobalizationConfig != null ? GlobalizationConfig.RequestEncoding : Encoding.Default;
 			}
 		}
 	}