我构建了一个将编辑数据库数据的服务。我希望在服务启动时运行Encrypt for connectionString /或者重新启动reuqest,我无法捕获OnStart
我错了什么?
我的班级
public class Service1 : IService1
{
protected void OnStart(string[] args)
{
string stop="";
//can't get here
//here Encrypt the section.
// section.SectionInformation.ProtectSection("DataProtectiond");
}
public string GetData(int value)
{
//my functions
}
}
答案 0 :(得分:1)
在调试服务时,很难捕获OnStart方法。您无法从Visual Studio运行服务,并且在生产中,在您可以附加调试器之前已经调用了OnStart方法。您可以做的是将以下代码放在OnStart方法中:
System.Diagnostics.Debugger.Launch()
这将弹出一个窗口,您可以在其中选择调试器。如果您已经打开了Visual Studio解决方案,则可以选择此项,调试器将附加到您的服务中。
运行您的服务"从Visual Studio中,你可以在Main()中输入这样的东西:
static void Main()
{
if (!Environment.UserInteractive)
{
// Startup as service.
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyServices()
};
ServiceBase.Run(ServicesToRun);
}
else
{
//Start things locally here,
//for example the same things you do in the OnStart() method of your service
}
}
现在您只需从Visual Studio运行程序,但在生产服务器上安装它时它也可以作为服务运行...