1

localhost の MVC3 アプリケーションでテストを実行しているときに、NLog アプリケーションが電子メールを送信しないようにする方法を知っている人はいますか? アプリケーションが Web サーバーにデプロイされたときにエラーが発生した場合にのみ、NLog が電子メールを送信するようにしたいと考えています。それを達成するために私は何を書かなければならないでしょうか?

ありがとう

4

2 に答える 2

1

メール設定を変更して、メール送信を「無効化」してみてください。

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
                <specifiedPickupDirectory pickupDirectoryLocation="c:\whateverfolder"/>
      </smtp>
    </mailSettings>
  </system.net>

これにより、コンピューターのフォルダーに電子メールがドロップされます。これは実際にはメールを停止しませんが、送信を停止します。

また、手動または自動テストを実行している場合、電子メールが「送信」されていることを確認するのが非常に簡単になります。

于 2012-07-31T12:49:54.273 に答える
1

これにはフィルターを使用できます。サーバー名が localhost の場合、 when-filterを使用してメール ターゲットのメッセージをフィルター処理できます。これは、localhost でサイトをリクエストしていることを前提としています。ただし、条件には任意のレイアウト レンダラーを使用できます。

以下の構成例を参照してください。これは私にとってはうまくいきます。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <targets>
  <target xsi:type="Mail" name="m" layout="${message}" subject="Log" 
          to="mail@domain.com" from="app@domain.com" body="${message}"
          smtpServer="localhost">
  </target>
 </targets>
 <rules>
  <logger name="*" minlevel="Fatal" writeTo="m" >
    <filters>
      <when condition="equals('${aspnet-request:serverVariable=SERVER_NAME}','localhost')" action="Ignore" />
    </filters>
  </logger>
 </rules>
</nlog>
于 2012-08-05T07:34:20.490 に答える