C# SQLite ExecuteReader可从控制台和表单应用程序工作,但不能从Windows服务工作
我有一个SQLite数据访问提供程序库,它通过一个单例类提供对SQLite数据库(.db)的非SQL编程访问。这个库实际上使用SQLiteCommands来实现这种访问。问题是用于选择查询的SQLiteDataReader的ExecuteReader在WinForms和Console测试应用程序中运行良好,但在Windows服务中使用时给出null。服务和测试应用都使用相同的库。不会引发异常。查看以下示例代码:C# SQLite ExecuteReader可从控制台和表单应用程序工作,但不能从Windows服务工作,c#,sqlite,windows-services,C#,Sqlite,Windows Services,我有一个SQLite数据访问提供程序库,它通过一个单例类提供对SQLite数据库(.db)的非SQL编程访问。这个库实际上使用SQLiteCommands来实现这种访问。问题是用于选择查询的SQLiteDataReader的ExecuteReader在WinForms和Console测试应用程序中运行良好,但在Windows服务中使用时给出null。服务和测试应用都使用相同的库。不会引发异常。查看以下示例代码: private SQLiteConnection slConn = null; pu
private SQLiteConnection slConn = null;
public void Initialize()
{
try
{
slConn = new SQLiteConnection(CreateIQDBConnString(Path.GetFileNameWithoutExtension(GetRegistry(PROJECT_PATH_REG))));
slConn.Open();
if (slConn.State == System.Data.ConnectionState.Open)
{
InitializeTables();
}
}
catch (Exception e)
{
throw e;
}
}
public List<IIQDevice> GetDevices()
{
try
{
List<IIQDevice> devices = new List<IIQDevice>();
using (SQLiteCommand r = GetGetDevicesCommand())
{
SQLiteDataReader dr = r.ExecuteReader();
while (dr.Read())
{
devices.Add(dr.ToIQDevice());
}
}
return devices;
}
catch (Exception e)
{
throw e;
}
}
private SQLiteCommand GetGetDevicesCommand()
{
return new SQLiteCommand("SELECT * FROM IQDEVICES;", slConn);
}
private SQLiteConnection slConn=null;
公共无效初始化()
{
尝试
{
slConn=新的SQLiteConnection(CreateIQDBConnString(Path.GetFileNameWithoutExtension(GetRegistry(PROJECT_Path_REG)));
slConn.Open();
if(slConn.State==System.Data.ConnectionState.Open)
{
初始化表();
}
}
捕获(例外e)
{
投掷e;
}
}
公共列表GetDevices()
{
尝试
{
列表设备=新列表();
使用(sqliter=getDeviceCommand())
{
SQLiteDataReader dr=r.ExecuteReader();
while(dr.Read())
{
添加(dr.ToIQDevice());
}
}
返回装置;
}
捕获(例外e)
{
投掷e;
}
}
私有SQLiteCommand getGetDeviceCommand()
{
返回新的SQLiteCommand(“从IQDEVICES中选择*”,slConn);
}
问题在于我编写的TOIQDevice扩展方法,其中一个Sqlite参数中有一个小错误,一旦修复了所述问题,问题就消失了,现在我可以通过ExecuteReader查看数据。这主要是用户权限问题。我想你必须朝那个方向看。(试着把它放在网络服务
)我试着把一个网络服务设置为SeviceCount,但设置为1。仍然ExecuteReader没有任何数据,2。现在,我的REST服务宿主ServiceHost未启动。但是,我是通过Allutil中的“以管理员身份运行”安装此服务的,并使用具有提升权限的TrayIcon应用程序启动/停止此服务。您知道什么是Windows服务吗?您知道用于执行此Windows服务的帐户是什么吗?那么对于这个帐户,您认为它可以访问注册表项或文件系统吗?如果您还不能回答这些问题,请尝试先为他们找到答案,然后重新访问此问题。@Lex Li,问题不在于帐户,实际上我的ToIQDevice扩展方法有一个错误,一旦修复,所述问题就会消失!