【问题标题】:Writing data to one file from several instances of single application, C#, Visual Studio 2008从单个应用程序、C#、Visual Studio 2008 的多个实例将数据写入一个文件
【发布时间】:2011-04-09 20:00:15
【问题描述】:

我有一个 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... 了解我未回答的问题。)

【问题讨论】:

    标签: c# visual-studio message-queue


    【解决方案1】:

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

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

    【讨论】:

    • 然后,如果您想组合它们,您可以让一个简单的服务器进程监视此文件夹的更改,并且可以检测到附加到一个文件的任何内容并将其写入主日志。
    【解决方案2】:

    如果您使用集中式服务来做到这一点会怎样?在某处的内部服务器上创建一个简单的日志记录 web 服务,并将数据发送到 web 服务。这样,只要每个人都可以访问该服务,就只有 Web 服务需要访问日志文件。然后,您可以将它们全部存储在一个文件夹中,或者对它们做任何您想做的事情。

    当然,它不一定非得是一个网络服务,但这是一种非常快速和简单的方法,而且它是第一个浮现在脑海中的方法。实际上,您的客户可以使用的任何集中式应用程序都应该可以解决问题。

    【讨论】:

    • 我现在有一个有缺陷的集中式服务,但我不确定如何快速实现您所说的。有任何“非 MSDN”参考资料或代码示例吗?
    【解决方案3】:

    将 PC 名称也添加到文件名中... 然后,您不会让所有实例都写入同一个文件,当您接到支持电话时,您可以直接转到该用户的 pc 文件,从其登录...

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

    你也可以通过 WCF 使用 MSMQ

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2014-09-20
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多