将数据写入来自单个应用程序C#,Visual Studio 2008的多个实例的一个文件

时间:2010-09-08 15:53:54

标签: c# visual-studio message-queue

我有一个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);

我想使用Messaging,但我不知道该怎么做 - 或者它是否是一个很好的解决方案。管理层希望我在本周五(今天是星期三)推出此更新。

使用_netPath存储来自我们网络中的大约100台PC的日志文件的最简单,最可靠的方法是什么?

注意:如果您引用MSDN,请粘贴文章。我们有一个旧的Microsoft ISA防火墙,无法通过MSDN网站。 (ISA服务器每次都会超时,而且非常令人费解!请参阅ISA Proxy Server can't...,查看我未回答的问题。)

3 个答案:

答案 0 :(得分:5)

将每个电脑的日志文件保存在网络文件夹中的不同名称下,而不是让所有电脑共享相同的日志文件。

您可以使用他们的网络ID作为名称或您可以自动生成的任何其他内容。

答案 1 :(得分:1)

将PC名称添加到文件名中...... 然后你没有把所有的实例都写到同一个文件中,当你得到一个支持电话时,你可以直接找到它所记录的用户电脑的文件......

或者,只需使用普通的WCF服务(甚至是自托管)来管理对文件的写入,所有其他机器只需调用服务方法

您也可以通过WCF使用MSMQ

答案 2 :(得分:0)

如果您使用集中服务来执行此操作会怎样?在某个内部服务器上创建一个简单的日志记录Web服务,并将数据发送到Web服务。这样只要每个人都可以触摸服务,只有web服务才需要访问日志文件。然后,您可以将它们全部存储在一个文件夹中,或者随意执行任何操作。

当然,它不一定是一个Web服务,但这是一种非常快速和简单的方式,而且它是第一个让人想到的。实际上,客户可以使用的任何集中式应用程序都应该可以解决问题。