服务器上的配置管理器异常但在开发机器上工作
configurationmanager exception on server but does work on dev machine
这个问题困扰了我好几个小时。
我有一个 LINQ 查询来解析我应用程序配置文件中未定义数量的电子邮件地址。
以下代码将有助于 tp 理解:
App.config
<configuration>
<appSettings>
<add key="errorMail1" value="support@mail.com"/>
<add key="errorMail2" value="test@mail.com"/>
</appSettings>
<configuration>
所以当我阅读电子邮件地址时,我通过 属性:
按以下方式进行
private List<string> _mailsWhenProblems;
public List<string> mailsWhenProblems
{
get
{
if (_mailsWhenProblems == null)
{
var keys = ConfigurationManager.AppSettings.Keys;
_mailsWhenProblems = keys.Cast<object>()
.Where(key => key.ToString().ToLower()
.Contains("errorMail".ToLower()))
.Select(key => ConfigurationManager.AppSettings.Get(key.ToString())).ToList();
}
return _mailsWhenProblems;
}
set
{
_mailsWhenProblems = value;
}
}
就是说,只要我 运行 它在开发机器上处于调试模式,一切都会按预期完美运行。但是一旦我在 Windows Server 2012 上部署它,应用程序就会崩溃并出现此异常:
************** Texte de l'exception **************
System.Configuration.ConfigurationErrorsException: Échec de l'initialisation du système de configuration ---> System.Configuration.ConfigurationErrorsException: Section de configuration non reconnue oracle.manageddataaccess.client. (C:\Program Files\celibec\Celibec Transfert Android FileWatcher\FileWatcherService.exe.Config line 20)
à System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
à System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
à System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
--- Fin de la trace de la pile d'exception interne ---
à System.Configuration.ConfigurationManager.PrepareConfigSystem()
à System.Configuration.ConfigurationManager.get_AppSettings()
异常与您的代码无关。您可能忘记了服务器配置文件中的 <configSections>
标记。使用此标签,您可以注册自定义 oracle.manageddataaccess.client
标签。我猜你的开发机器上有这个标签。
请注意,<configSections>
必须是 <configuration>
标签中的第一个。
有关详细信息,请参阅此 MSDN link 关于 Custom Configuration Sections。
这个问题困扰了我好几个小时。
我有一个 LINQ 查询来解析我应用程序配置文件中未定义数量的电子邮件地址。
以下代码将有助于 tp 理解:
App.config
<configuration>
<appSettings>
<add key="errorMail1" value="support@mail.com"/>
<add key="errorMail2" value="test@mail.com"/>
</appSettings>
<configuration>
所以当我阅读电子邮件地址时,我通过 属性:
按以下方式进行private List<string> _mailsWhenProblems;
public List<string> mailsWhenProblems
{
get
{
if (_mailsWhenProblems == null)
{
var keys = ConfigurationManager.AppSettings.Keys;
_mailsWhenProblems = keys.Cast<object>()
.Where(key => key.ToString().ToLower()
.Contains("errorMail".ToLower()))
.Select(key => ConfigurationManager.AppSettings.Get(key.ToString())).ToList();
}
return _mailsWhenProblems;
}
set
{
_mailsWhenProblems = value;
}
}
就是说,只要我 运行 它在开发机器上处于调试模式,一切都会按预期完美运行。但是一旦我在 Windows Server 2012 上部署它,应用程序就会崩溃并出现此异常:
************** Texte de l'exception **************
System.Configuration.ConfigurationErrorsException: Échec de l'initialisation du système de configuration ---> System.Configuration.ConfigurationErrorsException: Section de configuration non reconnue oracle.manageddataaccess.client. (C:\Program Files\celibec\Celibec Transfert Android FileWatcher\FileWatcherService.exe.Config line 20)
à System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
à System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors)
à System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
--- Fin de la trace de la pile d'exception interne ---
à System.Configuration.ConfigurationManager.PrepareConfigSystem()
à System.Configuration.ConfigurationManager.get_AppSettings()
异常与您的代码无关。您可能忘记了服务器配置文件中的 <configSections>
标记。使用此标签,您可以注册自定义 oracle.manageddataaccess.client
标签。我猜你的开发机器上有这个标签。
请注意,<configSections>
必须是 <configuration>
标签中的第一个。
有关详细信息,请参阅此 MSDN link 关于 Custom Configuration Sections。