1

我有一个客户端应用程序,它是一个带有 dll、exe 和配置文件的窗口服务器。

我为它创建了一个自定义安装程序,它将把它复制到程序文件中并更新它的配置。

这是我正在使用的代码

//read config and update
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)+"\\EventLogTracer.exe"; //this is app.exe path not app.exe.config path
Configuration evetconfig =ConfigurationManager.OpenExeConfiguration(path);
evetconfig.AppSettings.Settings.Remove("baseUri");
 evetconfig.AppSettings.Settings.Add("baseUri", "https://192.168.1.79:443/rest");
evetconfig.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

我的 app.exe.config 文件中也有 log4net 配置。我根本没有碰它。我的安装程序也有相同的 log4net 设置。

现在我创建了它的 MSI 文件并通过安装它来运行不同的机器。

现在在我的本地机器上,它安装得很完美,它选择了所有设置和 log4net 设置。一切都很完美。

在我的 VM 机器上,我尝试安装它。它已安装并将数据发布到服务器。但它没有获取 log4net 设置,也没有写入任何日志。

这里有什么问题,我没有脑子。有人可以帮忙吗?

谢谢

4

1 回答 1

1

我在 IIS 上部署的 WCF 应用程序遇到了类似的问题,结果证明这是与权限相关的问题。我知道您没有使用 IIS,但您的问题听起来也与权限有关。

生产中使用的是什么操作系统?服务器2008?如果是这样,他们是否比以前的 Windows 版本锁定了 Program Files 的权限?尝试完全控制将日志写入所有用户的文件夹,看看是否有效。如果是这样,您知道这是一个权限问题,然后您可以确定需要为哪些用户设置哪些特定权限(而不是让所有用户完全控制它)。

于 2012-06-29T15:40:52.957 回答