写了一个控制台应用程序来使用RestSharp来推送数据,但是当我尝试创建一个Windows服务时它不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写了一个控制台应用程序来使用RestSharp来推送数据,但是当我尝试创建一个Windows服务时它不起作用相关的知识,希望对你有一定的参考价值。

我的任务是创建一个使用RestSharp将数据推送到API的Windows服务。我已经创建了我需要的控制台应用程序,但是当我尝试将其转换为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);
    }

Log()方法有效,每次服务循环时都会添加到本地文本文件,但Grovo()不会。我目前正在尝试在我的本地计算机上运行它,因此我在本地系统下拥有服务ProcessInstaller帐户。

答案

你的json对象是空字符串。

var grovolist = new List<GrovoModel>();

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

你永远不会在你的grovolist中加载任何东西。您创建模型但不将其添加到列表中。

以上是关于写了一个控制台应用程序来使用RestSharp来推送数据,但是当我尝试创建一个Windows服务时它不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RestSharp 中向请求正文添加文本

如何将 JSON 返回反序列化为从 RestSharp 调用到 API 的对象数组?

页面重定向时 HttpWebRequest 和 Restsharp 不返回响应

unity Restsharp Api Json 序列化和反序列化

如何设计一个包装类来使用 C++ 应用程序以使用 C# DLL?

如何分别使用服务帐号和 API 密钥来使用 BigQuery?