C# 编写了一个控制台应用程序,使用RestSharp推送数据,但当我尝试创建Windows服务时,它不会';行不通

C# 编写了一个控制台应用程序,使用RestSharp推送数据,但当我尝试创建Windows服务时,它不会';行不通,c#,windows-services,restsharp,C#,Windows Services,Restsharp,我的任务是创建一个Windows服务,使用RestSharp将数据推送到API。我已经创建了一个控制台应用程序,它可以满足我的需要,但是当我尝试将其转换为Windows服务时,该方法无法运行。我甚至不能把一个错误归档。我已附上以下代码: protected override void OnStart(string[] args) { timer1 = new Timer(); this.timer1.Interval = 150000;

我的任务是创建一个Windows服务,使用RestSharp将数据推送到API。我已经创建了一个控制台应用程序,它可以满足我的需要,但是当我尝试将其转换为Windows服务时,该方法无法运行。我甚至不能把一个错误归档。我已附上以下代码:

    protected override void OnStart(string[] args)
    {
        timer1 = new Timer();
        this.timer1.Interval = 150000;
        this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
        timer1.Enabled = true;

        Log("Service Started successfully with Grovo-Test with Grovo in Try catch2");

        try
        {
            Grovo();
        }
        catch (Exception e)
        {
            Log(e.Message);
        }
    }

    public void Grovo()
    {
        var seconds = DateTime.Now.Second.ToString();
        var grovolist = new List<GrovoModel>();
        GrovoModel model = new GrovoModel()
        {
            employeeId = "testing",
            firstName = "testing" + seconds,
        };

        var jsonobject = "";

        foreach (var json in grovolist)
        {
            var post = JsonConvert.SerializeObject(json);
            jsonobject += post;
            jsonobject += "\n";
        }

        var clientrest = new RestClient("http://public-api.grovo.com/users/batch-sync");
        var request = new RestRequest(Method.POST);
        request.AddHeader("Postman-Token", "5fd35576-9ee6-4a65-8389-40a3b7eb1e8c");
        request.AddHeader("Cache-Control", "no-cache");
        request.AddHeader("content-type", "application/x-ndjson");
        request.AddHeader("x-grovo-onboarding-option", "email");
        request.AddHeader("x-api-key", "5Uss0T9T7b3Cdy04sGGkf7DFF7RYhPXV8mau11wh");
        //request.AddParameter("application/x-ndjson", postBody, ParameterType.RequestBody);
        request.AddParameter("application/x-ndjson", jsonobject, ParameterType.RequestBody);

        IRestResponse response = clientrest.Execute(request);
    }
protected override void OnStart(字符串[]args)
{
timer1=新定时器();
this.timer1.Interval=150000;
this.timer1.appeased+=新系统.Timers.ElapsedEventHandler(this.timer1_勾号);
timer1.Enabled=true;
日志(“使用Grovo在Try catch2中使用Grovo测试成功启动服务”);
尝试
{
Grovo();
}
捕获(例外e)
{
日志(e.Message);
}
}
公开无效Grovo()
{
var seconds=DateTime.Now.Second.ToString();
var grovolist=新列表();
GrovoModel模型=新GrovoModel()
{
employeeId=“测试”,
firstName=“测试”+秒,
};
var jsonobject=“”;
foreach(grovolist中的var json)
{
var post=JsonConvert.SerializeObject(json);
jsonobject+=post;
jsonobject+=“\n”;
}
var clientrest=新的RestClient(“http://public-api.grovo.com/users/batch-sync");
var请求=新的重新请求(Method.POST);
请求。AddHeader(“邮差令牌”,“5fd35576-9ee6-4a65-8389-40a3b7eb1e8c”);
AddHeader(“缓存控制”、“无缓存”);
AddHeader(“内容类型”、“应用程序/x-ndjson”);
请求。添加标题(“x-grovo-Onboard-option”、“电子邮件”);
请求.AddHeader(“x-api-key”,“5Uss0T9T7b3Cdy04sGGkf7DFF7RYhPXV8mau11wh”);
//AddParameter(“application/x-ndjson”,postBody,ParameterType.RequestBody);
AddParameter(“应用程序/x-ndjson”,jsonobject,ParameterType.RequestBody);
IRestResponse response=clientrest.Execute(请求);
}

Log()方法可以工作,每次服务循环通过时都会将其添加到本地文本文件中,但Grovo()方法不行。我目前正试图在本地计算机上运行此操作,因此我在本地系统下拥有service ProcessInstaller帐户。

您的json对象是空字符串

var grovolist = new List<GrovoModel>();

foreach (var json in grovolist)
        {
            var post = JsonConvert.SerializeObject(json);
            jsonobject += post;
            jsonobject += "\n";
        }
var grovolist=new List();
foreach(grovolist中的var json)
{
var post=JsonConvert.SerializeObject(json);
jsonobject+=post;
jsonobject+=“\n”;
}

你从不在你的grovolist中加载任何内容。您创建了模型,但没有将其添加到列表中。

服务循环?你从哪里听说过这种事?我想你的计时器应该叫点什么。但这不适用于服务。创建一个无限任务或线程,该线程在空闲时延迟/休眠,并在服务停止时终止。无论如何,只要添加“System.Debugging.Debugger.Launch();”即可调试服务在OnStart中。