ConfigurationErrorsException
The exception that is thrown when a configuration error has occurred.
using System.Collections;
using System.Collections.Generic;
using System.Configuration.Internal;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Xml;
namespace System.Configuration
{
[Serializable]
[TypeForwardedFrom("System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public class ConfigurationErrorsException : ConfigurationException
{
private const string HttpPrefix = "http:";
private const string SerializationParamFilename = "firstFilename";
private const string SerializationParamLine = "firstLine";
private const string SerializationParamErrorCount = "count";
private const string SerializationParamErrorData = "_errors";
private const string SerializationParamErrorType = "_errors_type";
private readonly ConfigurationException[] _errors;
private string _firstFilename;
private int _firstLine;
public override string Message {
get {
string filename = Filename;
int line;
if (!string.IsNullOrEmpty(filename)) {
if (Line == 0)
return BareMessage + " (" + filename + ")";
string[] obj = new string[6] {
BareMessage,
" (",
filename,
" line ",
null,
null
};
line = Line;
obj[4] = line.ToString(CultureInfo.CurrentCulture);
obj[5] = ")";
return string.Concat(obj);
}
if (Line == 0)
return BareMessage;
string bareMessage = BareMessage;
line = Line;
return bareMessage + " (line " + line.ToString("G", CultureInfo.CurrentCulture) + ")";
}
}
public override string Filename => _firstFilename;
public override int Line => _firstLine;
public ICollection Errors {
get {
if (_errors != null)
return _errors;
ConfigurationErrorsException ex = new ConfigurationErrorsException(BareMessage, base.InnerException, _firstFilename, _firstLine);
return new ConfigurationException[1] {
ex
};
}
}
internal ICollection<ConfigurationException> ErrorsGeneric => (ICollection<ConfigurationException>)Errors;
public ConfigurationErrorsException(string message, Exception inner, string filename, int line)
: base(message, inner)
{
Init(filename, line);
}
public ConfigurationErrorsException()
: this(null, null, null, 0)
{
}
public ConfigurationErrorsException(string message)
: this(message, null, null, 0)
{
}
public ConfigurationErrorsException(string message, Exception inner)
: this(message, inner, null, 0)
{
}
public ConfigurationErrorsException(string message, string filename, int line)
: this(message, null, filename, line)
{
}
public ConfigurationErrorsException(string message, XmlNode node)
: this(message, null, GetFilename(node), GetLineNumber(node))
{
}
public ConfigurationErrorsException(string message, Exception inner, XmlNode node)
: this(message, inner, GetFilename(node), GetLineNumber(node))
{
}
public ConfigurationErrorsException(string message, XmlReader reader)
: this(message, null, GetFilename(reader), GetLineNumber(reader))
{
}
public ConfigurationErrorsException(string message, Exception inner, XmlReader reader)
: this(message, inner, GetFilename(reader), GetLineNumber(reader))
{
}
internal ConfigurationErrorsException(string message, IConfigErrorInfo errorInfo)
: this(message, null, GetConfigErrorInfoFilename(errorInfo), GetConfigErrorInfoLineNumber(errorInfo))
{
}
internal ConfigurationErrorsException(string message, Exception inner, IConfigErrorInfo errorInfo)
: this(message, inner, GetConfigErrorInfoFilename(errorInfo), GetConfigErrorInfoLineNumber(errorInfo))
{
}
internal ConfigurationErrorsException(ConfigurationException e)
: this(e?.BareMessage, e?.InnerException, e?.Filename, e?.Line ?? 0)
{
}
internal ConfigurationErrorsException(ICollection<ConfigurationException> coll)
: this(GetFirstException(coll))
{
if (coll.Count > 1) {
_errors = new ConfigurationException[coll.Count];
coll.CopyTo(_errors, 0);
}
}
internal ConfigurationErrorsException(ArrayList coll)
: this((ConfigurationException)((coll.Count > 0) ? coll[0] : null))
{
if (coll.Count > 1) {
_errors = new ConfigurationException[coll.Count];
coll.CopyTo(_errors, 0);
}
}
protected ConfigurationErrorsException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
string string = info.GetString("firstFilename");
int int = info.GetInt32("firstLine");
Init(string, int);
int int2 = info.GetInt32("count");
if (int2 == 0)
return;
_errors = new ConfigurationException[int2];
int num = 0;
while (true) {
if (num >= int2)
return;
string str = num.ToString(CultureInfo.InvariantCulture);
string string2 = info.GetString(str + "_errors_type");
Type type = Type.GetType(string2, true);
if (type != typeof(ConfigurationException) && type != typeof(ConfigurationErrorsException))
break;
_errors[num] = (ConfigurationException)info.GetValue(str + "_errors", type);
num++;
}
throw ExceptionUtil.UnexpectedError("ConfigurationErrorsException");
}
private void Init(string filename, int line)
{
base.HResult = -2146232062;
if (line == -1)
line = 0;
_firstFilename = filename;
_firstLine = line;
}
private static ConfigurationException GetFirstException(ICollection<ConfigurationException> coll)
{
using (IEnumerator<ConfigurationException> enumerator = coll.GetEnumerator()) {
if (enumerator.MoveNext())
return enumerator.Current;
}
return null;
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
info.AddValue("firstFilename", Filename);
info.AddValue("firstLine", Line);
int value = 0;
if (_errors != null && _errors.Length > 1) {
value = _errors.Length;
for (int i = 0; i < _errors.Length; i++) {
string str = i.ToString(CultureInfo.InvariantCulture);
info.AddValue(str + "_errors", _errors[i]);
info.AddValue(str + "_errors_type", _errors[i].GetType());
}
}
info.AddValue("count", value);
}
public static int GetLineNumber(XmlNode node)
{
return GetConfigErrorInfoLineNumber(node as IConfigErrorInfo);
}
public static string GetFilename(XmlNode node)
{
return GetConfigErrorInfoFilename(node as IConfigErrorInfo);
}
public static int GetLineNumber(XmlReader reader)
{
return GetConfigErrorInfoLineNumber(reader as IConfigErrorInfo);
}
public static string GetFilename(XmlReader reader)
{
return GetConfigErrorInfoFilename(reader as IConfigErrorInfo);
}
private static int GetConfigErrorInfoLineNumber(IConfigErrorInfo errorInfo)
{
return errorInfo?.LineNumber ?? 0;
}
private static string GetConfigErrorInfoFilename(IConfigErrorInfo errorInfo)
{
return errorInfo?.Filename;
}
}
}