我的安装程序非常简单
public MyProjectInstaller()
{
processInstaller = new ServiceProcessInstaller()
{
Account = ServiceAccount.LocalSystem
};
Installers.Add(processInstaller);
serviceInstaller1 = new ServiceInstaller()
{
StartType = ServiceStartMode.Manual,
ServiceName = "PageRetriever",
DisplayName = "PageRetriever"
};
Installers.Add(serviceInstaller1);
}
并且EF生成的连接字符串是
<connectionStrings>
<add name="LrcPageTaskEntities" connectionString="metadata=res://*/Models.LrcPageTask.csdl|res://*/Models.LrcPageTask.ssdl|res://*/Models.LrcPageTask.msl;provider=System.Data.SqlClient;provider connection string="data source=DESKTOP-300NQR3\SQLEXPRESS;initial catalog=LrcPageTask;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我不确定我是否在SQL Server中添加了所有用户 Express
无论如何,当我只是尝试连接到
中的数据库时 protected override void OnStart(string[] args)
{
EventLog.WriteEntry(ServiceName + " started");
PageLoadTimer.Enabled = true;
try
{
repo.Add(new PageDocument()
{
Html = "<p>Test</p>",
PageType = 0,
DateAdded = DateTime.Now,
DateProcessed = null
});
}
catch(Exception e)
{
EventLog.WriteEntry(string.Format("Problem added a page document: {0}", e.Message));
}
}
但是当我启动我的服务时它不起作用,没有异常被记录!
我花了20多个小时试图解决这个问题,如果我在接下来的10个小时内无法解决这个问题,我将开始使用文本文件而不是数据库。
答案 0 :(得分:0)
在LocalSystem下运行的服务只能使用计算机帐户连接到数据库。因此,您应该为计算机帐户授予足够的权限,或者您使用模拟。