System.Diagnosis.TextWriterTraceListener 的問題沒有將任何日誌寫入文件系統
為了解決通過 smtp-server 發送電子郵件的問題,其中沒有發送電子郵件,建議我使用 System.Diagnosis.TextWriterTraceListener 啟用日誌記錄,以跟踪與 smtp-server 的通信以跟踪任何錯誤。我在節點下的 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 伺服器的完整通信。但是,在生產環境(在 Windows 2003 Server 的 IIS 6 上執行),它根本不起作用。沒有日誌被寫入文件系統。我的第一個想法是,也許 ASP.NET 工作程序帳戶(網路服務)沒有足夠的權限來寫入指定位置的文件系統。我解決了這個問題,但仍然沒有日誌。其次,我認為也許該文件夾被設置為“只讀”並修復了它。但我仍然沒有寫日誌。
有誰知道問題可能是什麼?或者關於如何解決這個問題的一些建議?提前謝謝!
首先,我會在不向文件系統寫入任何內容的情況下檢查跟踪是否真的有效。也就是說,我只使用正常的 Windows 跟踪。為了查看跟踪輸出,我會使用Windows Sysinternals 的 DebugView。當然,也許你應該改變你的配置文件,我對語法不是很熟悉。
現在,如果兩個環境(開發和生產)一切正常,以便您可以在查看器中查看跟踪消息,那麼問題將更多地集中在文件系統和日誌保存上。
你認為你的日誌文件保存在哪裡?當涉及到生產環境時,它可能是一個不同的位置。我認為在 Windows Server 2003 上,您應該在 WinDir 下的某處查找文件,而不是在 Web 應用程序的文件夾中。
在調試此類問題時,我會將 IIS 帳戶升級為本地/域管理員,以查看問題是否已解決。如果已解決,則此處存在權限問題。
祝你好運!