簡體   English   中英

從單個應用程序的多個實例,C#,Visual Studio 2008將數據寫入一個文件

[英]Writing data to one file from several instances of single application, C#, Visual Studio 2008

我有一個Visual Studio項目,該項目已安裝到我們公司大約一半的PC中。

該應用程序具有錯誤日志記錄例程,該例程將錯誤消息附加到保存在此處的文本文件中:

static string _appPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Application.CompanyName);

在大多數情況下,這可以很好地工作,並且使我能夠訪問單個PC上的日志文件。

它並非在所有地方都有效。 某些用戶具有受限帳戶,這些帳戶無權寫入Environment.SpecialFolder.CommonApplicationData文件夾。

我可以修改存儲在此處的路徑:

static string _newPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.CompanyName);

但是,當我需要收集日志文件時,必須深入每台PC上的每個用戶帳戶文件夾以獲取日志。

我想做的就是將這些消息存儲在我們的內部網絡中。 問題是如何處理多個寫入實例。

static string _netPath = Path.Combine(@"\\FileServer1", Application.CompanyName);

我想使用消息傳遞,但是我不確定該怎么做-或者這是否是一個好的解決方案。 管理層希望我在本星期五(今天是星期三)發布此更新。

使用_netPath存儲我們網絡中約100台PC的日志文件的最簡單,最可靠的方法是什么?

注意:請,如果您引用MSDN,請粘貼文章。 我們有一個無法通過MSDN網站的舊Microsoft ISA防火牆。 (ISA服務器每次都超時,這真令人沮喪!請參見ISA代理服務器無法...有關我的未解答問題。)

將每台計算機的日志文件以不同的名稱保存在您的網絡文件夾中,而不是讓所有計算機共享同一日志文件。

您可以使用其網絡ID作為名稱,也可以使用其他可以自動生成的名稱。

也將PC名稱添加到文件名中...然后,您不必將所有實例都寫入同一文件,並且在獲得支持電話時,您可以直接轉到該用戶所在PC的文件。 ..

另外,只需使用普通的WCF服務(甚至是自托管)來管理對文件的寫入,所有其他計算機都只需調用service方法

您也可以通過WCF使用MSMQ

如果您使用集中式服務來做到這一點怎么辦? 在某處的內部服務器上創建一個簡單的日志記錄Web服務,然后將數據發送到該Web服務。 這樣,只要每個人都可以觸摸服務,只有Web服務才需要訪問日志文件。 然后,您可以將它們全部存儲在一個文件夾中,或者對它們進行任何操作。

當然,它不一定必須是Web服務,但這是一種非常快速,簡單的方法,這是我想到的第一個方法。 實際上,您的客戶可以使用的任何集中式應用程序都可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM