【发布时间】:2014-05-25 02:06:34
【问题描述】:
我制作了一个包含套接字连接代码的 Windows 服务。根据安装此 Windows 服务后的代码并启动后,它应该将一些消息写入文本文件,但我看不到任何消息写入文本文件。在包含 Windows 7 的本地 PC 中,我的此服务能够写入文本文件。 这是我的代码..
try
{
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("Before Connection !");
}
client.Connect(new IPEndPoint(IPAddress.Parse(ip), intport));
Thread.Sleep(5000);
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("Connected To Machine !");
}
}
catch (Exception ex)
{
// Log the error here.
client.Close();
using (StreamWriter writer = new StreamWriter(textfileSaveLocation, true))
{
writer.WriteLine("Connection Error !");
}
continue;
}
所以我的疑问是为什么我的服务在我的本地系统中执行时无法写入服务器文本文件。此外,服务器 PC 中还有其他文本文件正在从其他人制作的其他 Windows 服务获取消息.为什么在我的情况下会发生这种情况? 请帮我。 提前致谢。
【问题讨论】:
-
textfileSaveLocation是绝对路径还是相对路径?如果它是相对路径,它会将文件存储在进程的工作目录中的某个位置,对于 Windows 服务,默认情况下为 C:\Windows\System32\(更准确地说是 %windir%\System32\) - 你可以找到通过调用System.Environment.CurrentDirectory静态属性的路径。 -
@HonzaBrestan"D:/logs/response.txt" 这是我要写的路径..我该如何使用你的建议。
-
如果您使用绝对路径,这应该不是问题。在这种情况下,我建议遵循 raja 回答中的要点(第 1-3 点)。
-
@HonzaBrestan 帐户仅限 LocalSystem,文件夹路径正确,我以管理员权限运行服务
-
Process Monitor(可从 MS 网站获得)是解决此类问题必不可少的工具。
标签: c# windows windows-services windows-server-2008 text-files