RESTful服务,以请求外部API和更新SQL Server数据库

时间:2017-08-12 19:09:05

标签: c# rest asp.net-web-api

我想制作一个RESTful API(或任何其他可以完成它的方式),让它在一个循环中工作,每天在同一时间执行指定的任务。

具体来说,我希望它能够访问外部API,比方说,每天午夜,请求指定的数据并相应地更新数据库。我知道如何向API发出请求并让它做一些事情。但我希望它能自动完成,所以我甚至不需要与它进行交互,甚至不必提出请求。

这样做的原因是我正在开发一个需要多个平台的项目(即使它只是一个平台,用户也会是几个)而且我无法向外部API发出请求(主要是因为每次用户登录或点击每个平台上的按钮时,都会进行试用,这是一个学校项目。

我不知道如何使用Web服务(或者甚至可能)。我尝试使用Web表单与BackgroundWorker进行异步,但没有。

我想我可能会在经验更丰富的人身上获得更好的运气。

希望你能帮助我。

先谢谢, 法比奥。

2 个答案:

答案 0 :(得分:1)

不知道我是否做对了,但在我看来,最简单的方法是做你想要的(让节目安排在每天给定的时间工作)是使用Windows Scheduler安排你的应用程序始终在您想要的特定时间运行。

答案 1 :(得分:0)

由于@Pedro Gaspar - LoboFX的帮助,我设法到达那里。 我不想要Windows Scheduler,因为我希望它反映在代码上,而且我无法访问服务器所在的位置。那就是说,让我在那里的是这样的事情:

private static string LigacaoBD="something";
    private static Perfil perfil = new Perfil(LigacaoBD);

    protected void Page_Load(object sender, EventArgs e)
    {
        Task.Factory.StartNew(() => teste());

    }

    private void teste()
    {

        bool verif = false;

        while (true)
        {
            if (DateTime.UtcNow.Hour + 1 == 22 && DateTime.UtcNow.Minute == 12 && DateTime.UtcNow.Second == 0)
                verif = false;

            if (!verif)
            {
                int resposta = perfil.Guardar(DateTime.UtcNow.ToString());
                verif = true;

            }
            Thread.Sleep(1000);
        }
    }

它通过类库插入数据库。并且通过这个循环,它保证它只插入一次(因此bool)并且当它到达指定的小时,分​​钟和秒时它重置,允许它再次插入。如果发生了某些事情,服务器发生故障,当它重新启动时,无论如何都会插入。唯一的问题是,如果它已经插入并且服务器发生故障,它将再次插入。但是为此存在存储过程。好吧,不是DateTime.UtcNow.ToString(),但这只是一个测试。