Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Sys / System / Configuration / ConfigurationException.cs / 1305376 / ConfigurationException.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Configuration { using System.Configuration.Internal; using System.Globalization; using System.IO; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; using System.Xml; using System.Collections; using System.Runtime.Versioning; // A config exception can contain a filename (of a config file) // and a line number (of the location in the file in which a problem was // encountered). // // Section handlers should throw this exception (or subclasses) // together with filename and line nubmer information where possible. [Serializable] public class ConfigurationException : SystemException { private const string HTTP_PREFIX = "http:"; private string _filename; private int _line; void Init(string filename, int line) { HResult = HResults.Configuration; _filename = filename; _line = line; } // Default ctor is required for serialization. protected ConfigurationException(SerializationInfo info, StreamingContext context) : base(info, context) { Init(info.GetString("filename"), info.GetInt32("line")); } [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException() : this(null, null, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message) : this(message, null, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner) : this(message, inner, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, XmlNode node) : this(message, null, GetUnsafeXmlNodeFilename(node), GetXmlNodeLineNumber(node)) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner, XmlNode node) : this(message, inner, GetUnsafeXmlNodeFilename(node), GetXmlNodeLineNumber(node)) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, string filename, int line) : this(message, null, filename, line) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner, string filename, int line) : base(message, inner) { Init(filename, line); } [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter=true)] public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("filename", _filename); info.AddValue("line", _line); } // The message includes the file/line number information. // To get the message without the extra information, use BareMessage. public override string Message { get { string file = Filename; if (!string.IsNullOrEmpty(file)) { if (Line != 0) { return BareMessage + " (" + file + " line " + Line.ToString(CultureInfo.InvariantCulture) + ")"; } else { return BareMessage + " (" + file + ")"; } } else if (Line != 0) { return BareMessage + " (line " + Line.ToString("G", CultureInfo.InvariantCulture) + ")"; } else { return BareMessage; } } } public virtual string BareMessage { get { return base.Message; } } public virtual string Filename { [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] get { return SafeFilename(_filename); } } public virtual int Line { get { return _line; } } [Obsolete("This class is obsolete, use System.Configuration!System.Configuration." + "ConfigurationErrorsException.GetFilename instead")] [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] public static string GetXmlNodeFilename(XmlNode node) { return SafeFilename(GetUnsafeXmlNodeFilename(node)); } [Obsolete("This class is obsolete, use System.Configuration!System.Configuration." + "ConfigurationErrorsException.GetLinenumber instead")] public static int GetXmlNodeLineNumber(XmlNode node) { IConfigErrorInfo configNode = node as IConfigErrorInfo; if (configNode != null) { return configNode.LineNumber; } return 0; } [FileIOPermission(SecurityAction.Assert, AllFiles=FileIOPermissionAccess.PathDiscovery)] [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] private static string FullPathWithAssert(string filename) { string fullPath = null; try { fullPath = Path.GetFullPath(filename); } catch { } return fullPath; } // // Internal Helper to strip a full path to just filename.ext when caller // does not have path discovery to the path (used for sane error handling). // [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal static string SafeFilename(string filename) { if (string.IsNullOrEmpty(filename)) { return filename; } // configuration file can be an http URL in IE if (filename.StartsWith(HTTP_PREFIX, StringComparison.OrdinalIgnoreCase)) { return filename; } try { // Confirm that it is a full path. // GetFullPath will also Demand PathDiscovery for the resulting path string fullPath = Path.GetFullPath(filename); } catch (SecurityException) { // Get just the name of the file without the directory part. try { string fullPath = FullPathWithAssert(filename); filename = Path.GetFileName(fullPath); } catch { filename = null; } } catch { filename = null; } return filename; } private static string GetUnsafeXmlNodeFilename(XmlNode node) { IConfigErrorInfo configNode = node as IConfigErrorInfo; if (configNode != null) { return configNode.Filename; } return string.Empty; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Configuration { using System.Configuration.Internal; using System.Globalization; using System.IO; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; using System.Xml; using System.Collections; using System.Runtime.Versioning; // A config exception can contain a filename (of a config file) // and a line number (of the location in the file in which a problem was // encountered). // // Section handlers should throw this exception (or subclasses) // together with filename and line nubmer information where possible. [Serializable] public class ConfigurationException : SystemException { private const string HTTP_PREFIX = "http:"; private string _filename; private int _line; void Init(string filename, int line) { HResult = HResults.Configuration; _filename = filename; _line = line; } // Default ctor is required for serialization. protected ConfigurationException(SerializationInfo info, StreamingContext context) : base(info, context) { Init(info.GetString("filename"), info.GetInt32("line")); } [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException() : this(null, null, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message) : this(message, null, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner) : this(message, inner, null, 0) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, XmlNode node) : this(message, null, GetUnsafeXmlNodeFilename(node), GetXmlNodeLineNumber(node)) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner, XmlNode node) : this(message, inner, GetUnsafeXmlNodeFilename(node), GetXmlNodeLineNumber(node)) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, string filename, int line) : this(message, null, filename, line) {} [Obsolete("This class is obsolete, to create a new exception create a System." + "Configuration!System.Configuration.ConfigurationErrorsException")] public ConfigurationException(string message, Exception inner, string filename, int line) : base(message, inner) { Init(filename, line); } [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter=true)] public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue("filename", _filename); info.AddValue("line", _line); } // The message includes the file/line number information. // To get the message without the extra information, use BareMessage. public override string Message { get { string file = Filename; if (!string.IsNullOrEmpty(file)) { if (Line != 0) { return BareMessage + " (" + file + " line " + Line.ToString(CultureInfo.InvariantCulture) + ")"; } else { return BareMessage + " (" + file + ")"; } } else if (Line != 0) { return BareMessage + " (line " + Line.ToString("G", CultureInfo.InvariantCulture) + ")"; } else { return BareMessage; } } } public virtual string BareMessage { get { return base.Message; } } public virtual string Filename { [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] get { return SafeFilename(_filename); } } public virtual int Line { get { return _line; } } [Obsolete("This class is obsolete, use System.Configuration!System.Configuration." + "ConfigurationErrorsException.GetFilename instead")] [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] public static string GetXmlNodeFilename(XmlNode node) { return SafeFilename(GetUnsafeXmlNodeFilename(node)); } [Obsolete("This class is obsolete, use System.Configuration!System.Configuration." + "ConfigurationErrorsException.GetLinenumber instead")] public static int GetXmlNodeLineNumber(XmlNode node) { IConfigErrorInfo configNode = node as IConfigErrorInfo; if (configNode != null) { return configNode.LineNumber; } return 0; } [FileIOPermission(SecurityAction.Assert, AllFiles=FileIOPermissionAccess.PathDiscovery)] [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] private static string FullPathWithAssert(string filename) { string fullPath = null; try { fullPath = Path.GetFullPath(filename); } catch { } return fullPath; } // // Internal Helper to strip a full path to just filename.ext when caller // does not have path discovery to the path (used for sane error handling). // [ResourceExposure(ResourceScope.Machine)] [ResourceConsumption(ResourceScope.Machine)] internal static string SafeFilename(string filename) { if (string.IsNullOrEmpty(filename)) { return filename; } // configuration file can be an http URL in IE if (filename.StartsWith(HTTP_PREFIX, StringComparison.OrdinalIgnoreCase)) { return filename; } try { // Confirm that it is a full path. // GetFullPath will also Demand PathDiscovery for the resulting path string fullPath = Path.GetFullPath(filename); } catch (SecurityException) { // Get just the name of the file without the directory part. try { string fullPath = FullPathWithAssert(filename); filename = Path.GetFileName(fullPath); } catch { filename = null; } } catch { filename = null; } return filename; } private static string GetUnsafeXmlNodeFilename(XmlNode node) { IConfigErrorInfo configNode = node as IConfigErrorInfo; if (configNode != null) { return configNode.Filename; } return string.Empty; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BindingCompleteEventArgs.cs
- DataGridViewLinkColumn.cs
- SelectionItemPattern.cs
- NeedSkipTokenVisitor.cs
- UriScheme.cs
- LocationUpdates.cs
- ScopelessEnumAttribute.cs
- RtfFormatStack.cs
- AbstractDataSvcMapFileLoader.cs
- WindowsListViewGroupHelper.cs
- PeerName.cs
- MimeMultiPart.cs
- AnnotationDocumentPaginator.cs
- BufferedWebEventProvider.cs
- _NestedMultipleAsyncResult.cs
- JsonEnumDataContract.cs
- ExpressionParser.cs
- WindowsFormsEditorServiceHelper.cs
- sitestring.cs
- InstalledFontCollection.cs
- PixelFormat.cs
- HtmlInputReset.cs
- SrgsRulesCollection.cs
- WindowsTitleBar.cs
- Function.cs
- PrimitiveType.cs
- Misc.cs
- CalendarDateChangedEventArgs.cs
- x509utils.cs
- HebrewNumber.cs
- MenuCommands.cs
- PageVisual.cs
- InvokeProviderWrapper.cs
- ThreadLocal.cs
- SoapAttributeAttribute.cs
- TextRenderer.cs
- Size.cs
- FlagsAttribute.cs
- SegmentInfo.cs
- TextTreeRootTextBlock.cs
- SoapReflectionImporter.cs
- IncrementalHitTester.cs
- DynamicArgumentDesigner.xaml.cs
- CreateInstanceBinder.cs
- CodeAssignStatement.cs
- PermissionAttributes.cs
- CompletionProxy.cs
- VisualTransition.cs
- StateBag.cs
- DataBoundControlAdapter.cs
- PrefixQName.cs
- ComplexPropertyEntry.cs
- SerializableAuthorizationContext.cs
- SqlConnectionHelper.cs
- WindowsImpersonationContext.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- EventListener.cs
- DocumentPageView.cs
- SafeViewOfFileHandle.cs
- SmtpAuthenticationManager.cs
- QuotedStringFormatReader.cs
- EndpointDispatcher.cs
- ContainerAction.cs
- validationstate.cs
- CodeObject.cs
- OSFeature.cs
- _LocalDataStoreMgr.cs
- Mappings.cs
- ResourceIDHelper.cs
- PlatformNotSupportedException.cs
- RawKeyboardInputReport.cs
- SqlInfoMessageEvent.cs
- QueryCacheEntry.cs
- dbdatarecord.cs
- SevenBitStream.cs
- StatusBarPanel.cs
- RankException.cs
- NativeObjectSecurity.cs
- XsltLoader.cs
- Delay.cs
- ToolStripLocationCancelEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- UserPersonalizationStateInfo.cs
- ScriptingScriptResourceHandlerSection.cs
- DeadLetterQueue.cs
- OrderPreservingPipeliningMergeHelper.cs
- PersonalizationProviderHelper.cs
- DataServiceBehavior.cs
- DetailsViewInsertedEventArgs.cs
- MatrixValueSerializer.cs
- _TimerThread.cs
- DataGridTableCollection.cs
- NotFiniteNumberException.cs
- DataGridViewCellFormattingEventArgs.cs
- IdentityHolder.cs
- InternalControlCollection.cs
- WindowsRichEdit.cs
- DataRecordInternal.cs
- WindowsButton.cs
- PerformanceCounterPermissionEntry.cs