9

電子メールが送信されない smtp サーバーを介して電子メールを送信する際の問題を解決するために、System.Diagnosis.TextWriterTraceListener を使用してログを有効にし、smtp サーバーとの通信を追跡してエラーを追跡するようにアドバイスされました。ノードの下の web.config に次を追加しました。

<system.diagnostics>
      <trace autoflush="true" />
      <sources>
        <source name="System.Net" >
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>

        <source name="System.Net.Sockets">
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>
      </sources>

      <sharedListeners>
        <add
          name="MyTraceFile"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="System.Net.trace.log"                />
      </sharedListeners>

      <switches>
        <add name="System.Net" value="Verbose" />
        <add name="System.Net.Sockets" value="Verbose" />
      </switches>
    </system.diagnostics>

開発マシンで試してみたところ、問題なく動作しました。smtp-server との完全な通信を簡単に読み取ることができました。ただし、運用環境 (Windows 2003 Server の IIS 6 で実行) では、まったく機能しません。ファイルシステムにログが書き込まれていません。私が最初に考えたのは、ASP.NET ワーカー プロセス アカウント (NETWORK SERVICE) には、指定された場所にあるファイル システムに書き込むための十分な権限がないのではないかということでした。私はそれを修正しましたが、まだログを取得しません。第二に、おそらくフォルダーが「読み取り専用」に設定されているのではないかと考え、それも修正しました。しかし、まだログが書き込まれません。

誰が問題が何であるか考えていますか? または、これを修正する方法についてのアドバイスはありますか?事前にサンクス!

4

5 に答える 5

3

まず、ファイル システムに何も書き込まずに、トレースが実際に機能するかどうかを確認します。つまり、通常の Windows トレースを使用するだけです。トレース出力を表示するには、Windows Sysinternals の DebugViewを使用します。もちろん、おそらく構成ファイルを変更する必要があります。私は構文に精通していません。

ここで、両方の環境 (開発と運用) ですべてが正常に機能し、ビューアーでトレース メッセージを表示できる場合、問題はファイル システムとログの保存に集中しています。

ログファイルはどこに保存されていると思いますか? 実稼働環境に関しては、別の場所である可能性があります。Windows Server 2003 では、Web アプリケーションのフォルダーではなく、WinDir の下のどこかでファイルを探す必要があると思います。

このような問題のデバッグに関しては、IIS のアカウントをローカル/ドメイン管理者にエスカレートして、問題が解決したかどうかを確認します。解決した場合は、ここに権限の問題があります。

幸運を!

于 2010-02-06T21:14:17.807 に答える
2

開発と本番で同じビルドですか?TRACE 条件付きコンパイル定数がリリース モードで定義されていないことがよくあります。その後、トレースは表示されません。

于 2010-02-01T09:00:19.897 に答える
1

私の問題は、TRACE 定数が依存プロジェクトで定義されていなかったため、メイン プロジェクトで設定されていてもログに記録されないことでした。TRACE 定数を依存プロジェクトに追加すると、期待どおりに機能しました。

于 2015-06-04T21:58:53.537 に答える
1

Process Monitorを使用して、System.Net.trace.log ファイルが書き込まれているかどうか、またはファイルの作成中にエラーが発生したかどうかを確認しましたか? 探していない奇妙な場所に書き込まれている可能性はありますか (デフォルトは、ASP.NET ワーカー プロセスの現在の作業ディレクトリである必要があると思います)。

于 2010-02-05T05:03:55.390 に答える