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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HorizontalAlignConverter.cs
- QilParameter.cs
- TextModifierScope.cs
- MaterialCollection.cs
- LingerOption.cs
- TextSpanModifier.cs
- DynamicILGenerator.cs
- EmptyQuery.cs
- SystemWebExtensionsSectionGroup.cs
- PaperSize.cs
- ListComponentEditor.cs
- GridViewDeleteEventArgs.cs
- CustomErrorsSection.cs
- GuidelineSet.cs
- DefaultBindingPropertyAttribute.cs
- InlineUIContainer.cs
- StylusPlugInCollection.cs
- CompilerInfo.cs
- LineBreakRecord.cs
- Queue.cs
- EdmConstants.cs
- HtmlElementErrorEventArgs.cs
- MobileTextWriter.cs
- DataGridViewControlCollection.cs
- BaseContextMenu.cs
- MenuItemStyle.cs
- StateMachineTimers.cs
- ObjectTag.cs
- DefaultBinder.cs
- DbSource.cs
- dsa.cs
- SafeNativeMethods.cs
- RegexNode.cs
- CanonicalFontFamilyReference.cs
- FormsAuthenticationModule.cs
- ApplicationFileParser.cs
- SiteMap.cs
- StatusStrip.cs
- XsdCachingReader.cs
- BooleanAnimationUsingKeyFrames.cs
- Divide.cs
- Thread.cs
- Vector3DAnimationBase.cs
- HtmlTable.cs
- WebPartConnectionsConnectVerb.cs
- ApplicationProxyInternal.cs
- WebConfigurationFileMap.cs
- LinearKeyFrames.cs
- CodeAccessPermission.cs
- TreeNodeCollectionEditor.cs
- OpCopier.cs
- AlignmentYValidation.cs
- DeferredSelectedIndexReference.cs
- PerfCounters.cs
- CodeBinaryOperatorExpression.cs
- DataSourceSelectArguments.cs
- SerializationFieldInfo.cs
- AnonymousIdentificationModule.cs
- CodeMemberEvent.cs
- DynamicArgumentDialog.cs
- OptimisticConcurrencyException.cs
- MdImport.cs
- ListBoxItem.cs
- DependencyObjectValidator.cs
- AuthorizationSection.cs
- DateTimeConverter.cs
- ParamArrayAttribute.cs
- Profiler.cs
- ArgumentReference.cs
- TargetException.cs
- DrawingContextWalker.cs
- Claim.cs
- QilGeneratorEnv.cs
- MetaModel.cs
- Timeline.cs
- IgnoreSection.cs
- DataGridViewCellStateChangedEventArgs.cs
- LineProperties.cs
- FontFamilyValueSerializer.cs
- UTF7Encoding.cs
- SubordinateTransaction.cs
- CommandLibraryHelper.cs
- TaiwanCalendar.cs
- StringPropertyBuilder.cs
- HwndStylusInputProvider.cs
- XPathArrayIterator.cs
- InkCollectionBehavior.cs
- ProfileBuildProvider.cs
- LicenseException.cs
- WebControlParameterProxy.cs
- ButtonPopupAdapter.cs
- OleDbInfoMessageEvent.cs
- DelayedRegex.cs
- SamlDoNotCacheCondition.cs
- FullTrustAssembliesSection.cs
- OutputWindow.cs
- DataGridHeaderBorder.cs
- Tokenizer.cs
- Authorization.cs
- FixedSOMTableCell.cs