You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Framework 4.8 App Service中NLog.config读取Web.config配置的问题

问题描述

我们的应用是运行在App Service上的.NET Framework 4.8程序,已安装以下NLog相关NuGet包:

NLog 4.7.15
NLog.Config 4.5.9
NLog.Extended 4.5.9
NLog.Web 4.6.0
NLog.Schema 4.5.9

Web.config中包含如下配置:

<connectionStrings>
  <add name="ElasticUrl" connectionString="http://localhost:9200"/>
</connectionStrings>
<appSettings>
  <add key="testRobot" value="12345" />
</appSettings>

请问能否在NLog.config中获取这些配置值?例如原本用<parameter name="@logged" layout="${date}" />设置日期,是否可以类似<parameter name="@logged" layout="${ConfigurationManager.AppSettings["testRobot"]}" />这样获取配置?

更新内容

已成功读取AppSettings值,但与文档建议的用法略有不同——文档使用item参数,而我必须用name:

<parameter name="@message" layout="${appsetting:name=testRobot:default=default}" />

该配置可将值12345存入message字段。

但读取连接字符串时失败:

  • 尝试用${appsetting:item=connectionStrings.ElasticUrl}读取,执行时报错:Required parameter 'Name' on 'Layout Renderer: ${appsetting}' was not specified.
  • 使用${appsetting:name=connectionStrings.ElasticUrl}时,虽未抛出异常,但存储的message为空字符串。

另外还有疑问:连接字符串不在appSettings标签内,为何要使用${appsetting}来读取?


解答

AppSettings读取的参数差异

你遇到的name与item参数的差异,源于NLog版本的兼容性:

  • 你使用的NLog 4.7.15版本中,appsetting布局渲染器已将指定键的参数名从旧版的item改为name;
  • 旧文档中的item参数已过时,不再生效,因此必须用name才能正确读取AppSettings的值,这也是你配置成功的原因。

连接字符串的正确读取方式

${appsetting}布局渲染器仅负责读取appSettings节点下的配置,无法直接读取connectionStrings节点内容。你看到的文档示例可能针对的是支持扩展配置读取的NLog新版本(如NLog 5.x+),不适用于当前版本。

在NLog 4.7.15中,读取Web.config的连接字符串需要使用专门的${connectionstring}布局渲染器,配置示例如下:

<parameter name="@elasticUrl" layout="${connectionstring:name=ElasticUrl:default=http://fallback.url}" />
  • name参数对应Web.config中connectionStrings节点下add元素的name属性值;
  • default为可选参数,用于指定找不到对应连接字符串时的默认值。

为何不能用${appsetting}读取连接字符串

connectionStrings是Web.config中独立于appSettings的顶级节点,.NET的ConfigurationManager也是通过ConfigurationManager.ConnectionStrings和ConfigurationManager.AppSettings分别读取这两个节点的内容。NLog的布局渲染器对应这两种不同的读取逻辑,因此必须使用专门的${connectionstring}渲染器来读取连接字符串,而非${appsetting}。


内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:15:20