C# WINDOWS服务 通过属性的方式 读txt文件问题
问题描述:
Class1 类 我封装了一些属性 来读取 一个 txt文件 ,我在windiwos服务中调用这个属性,读取出来的时空字符串,代码如下:
C盘a.txt 文件里面时有值的。
类库:namespace1
namespace namespace1
{
public class Class1
{
private string path = "C:\\a.txt";
private string a = "";
public string A
{
get
{
a = File.ReadAllText(path);
return a;
}
set
{
File.WriteAllText(path, value);
}
}
}
}
windows服务:
namespace Service1
{
public partial class Service_1 : ServiceBase
{
Class1 c = new Class1();
protected override void OnStart(string[] args)
{
string str = c.A;
//输出日志
//打印出来 str为 空字符串
}
}
}
UAC 已配置为 管理员权限
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
使用管理员账号安装的服务
答
代码没看出什么问题,应该是权限的问题。
你用什么账户运行的服务,是netuser还是system,总之右键点c:\1.txt这个文件,属性,安全性,然后给windows服务所在的用户读写权限。
答
确认下文件是UTF-8 或UTF-32格式吗?可以先用WriteAllText通过代码方式把内容写到文件中,然后再调用ReadAllText获取内容。
可参考下微软官网的ReadAllText相关介绍:
https://docs.microsoft.com/en-us/dotnet/api/system.io.file.readalltext?redirectedfrom=MSDN&view=netframework-4.8#System_IO_File_ReadAllText_System_String_