首页 > 解决方案 > 从我们的服务器运行时收到 NLog 错误,但在本地运行很好

问题描述

我在我们的一个较旧的 .net windows 窗体应用程序中遇到了一个涉及 NLog (ver2.1.0.0) 的奇怪错误。

我对应用程序进行了更改,并且能够成功运行和测试更改,没有任何问题。当我们将它上传到我们的 QA 服务器(我相信是 Windows Server 2008)时,我们收到以下错误: 为 nlog 创建配置节处理程序时发生错误:从 .exe.Config 第 58 行加载配置时发生异常

奇怪的是,我似乎无法弄清楚为什么会这样。这是我的 nLog app.config 代码。第 58 行是第一行,以< nlog xmlns...开头

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true" internalLogFile="c:\temp\nlog.txt" internalLogLevel="Debug">
<variable name="applicationName" value="Load Import"/>
<targets>
  <target name="console" type="Console" layout="${date:format=HH\:mm\:ss} ${logger} ${level} ${message}${onexception:${newline}Exception\:${newline}${exception:format=tostring}}" />
  <target name="mail" xsi:type="Mail" smtpServer="relay.ourcompany.com" from="" to="" addNewLines="true" subject="ImportBill - ${level} ${onexception: Exception}" layout="Date: ${longdate}${newline}Level: ${uppercase:${level}}${newline}Logger: ${logger}${newline}Machine: ${machinename}${newline}Message: ${message}${onexception:${newline}Exception\:${newline}${exception:format=tostring}}${newline}" />
  <target name="database" xsi:type="Database" connectionStringName="Logging" keepConnection="true">
 <commandText>
    exec [nlog].[Message_Add]
    @LogDate = @logDate,
    @MachineName = @machineName,
    @ProcessName = @processName,
    @Version = @assemblyVersion,
    @Logger = @logger,
    @LogLevel = @logLevel,
    @Origin = @callSite,
    @Message = @message,
    @Exception = @exception,
    @StackTrace = @stackTrace,
    @WindowsIdentity = @windowsIdentity,
    @BaseDirectory = @baseDirectory,
    @AdditionalInfo = @additionalInfo,
    @RequestIdentifier = @requestIdentifier,
    @Log4JEvent = @log4jEvent
  </commandText>
  <parameter name="@logDate" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff}" />
  <parameter name="@machineName" layout="${machinename}" />
  <parameter name="@ProcessName" layout="${processname}" />
  <parameter name="@assemblyVersion" layout="${assembly-version}" />
  <parameter name="@logger" layout="${logger}" />
  <parameter name="@logLevel" layout="${level}" />
  <parameter name="@callSite" layout="${callsite}" />
  <parameter name="@message" layout="${message}" />
  <parameter name="@exception" layout="${exception:format=tostring}" />
  <parameter name="@stackTrace" layout="${stacktrace}" />
  <parameter name="@windowsIdentity" layout="${windows-identity}" />
  <parameter name="@baseDirectory" layout="${basedir}" />
  <parameter name="@additionalInfo" layout="${mdc:item=AdditionalInfo}" />
  <parameter name="@requestIdentifier" layout="" />
  <parameter name="@log4jEvent" layout="&lt;?xml version=&quot;1.0&quot; ?&gt;&lt;data xmlns:log4j=&quot;http://jakarta.apache.org/log4j/&quot; xmlns:nlog=&quot;http://nlog-project.org/&quot;&gt;${log4jxmlevent:includeSourceInfo=true:includeCallSite=true:includeMdc=true:includeNdc=true}&lt;/data&gt;" />
  </target>
</targets>
<rules>
  <logger name="*" minlevel="Trace" maxLevel="Fatal" writeTo="database" />
  <logger name="*" minlevel="Error" maxLevel="Fatal" writeTo="mail" />
</rules>

知道可能是什么原因造成的吗?

谢谢

标签: c#web-confignlog

解决方案


所以,我至少能够找出根本问题,所以我想我会把它贴在这里,以防其他人遇到这个问题。

我遇到了一个单独的潜在错误,在我的情况下是无效的 Web 服务证书。该错误被 nlog 捕获,但由于我仍然无法弄清楚的原因,nlog 也引发了错误。无论如何,所以我将配置文件中的 nlog“throwExceptions”设置为 false 并重新运行我的应用程序。这样做让我发现了我的错误的真正根本原因,在我的情况下是“证书有问题。禁止连接到https://mywebservice.com/mywebservicename ”

谢谢


推荐阅读