从.net windows服务调用restful api似乎不起作用



我创建了一个windows服务应用程序,它应该每一分钟调用一次restful api。实际上,我正在本地主机设备上运行API,并设置一个断点来检测是否调用了API,但没有收到任何消息。

然后,我将完全相同的代码复制到控制台应用程序中,它似乎运行得很完美。我真的是windows服务的新手,我不知道在服务中调用api是否有任何限制,所以你能告诉我的问题在哪里吗

=============================================

此函数将每1分钟调用一次

public async Task<DateTime> GetLastUpdatedDate(string branchName)
{
var VpsBaseUrl = System.Configuration.ConfigurationManager.AppSettings["VpsBaseUrl"];
HttpResponseMessage response = await client.GetAsync($"{VpsBaseUrl}/api/transactions/{branchName}");
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<DateTime>(json);
Console.WriteLine(result.ToString());
return result;
}
else
{
return DateTime.Now.AddDays(-10);
}
}

=================================================

protected override void OnStart(string[] args)
{
//Create a new Timer with Interval set to seconds(1 Minutes).
System.Timers.Timer aTimer = new System.Timers.Timer(1 * 60 * 1000);
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
aTimer.AutoReset = true;
aTimer.Enabled = true;
aTimer.Start();
}
protected override void OnStop(){ }
//object source, System.Timers.ElapsedEventArgs e
private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
try
{
var task = Task.Run(async () =>
{
var x =  await tProxy.GetLastUpdatedDate("branch1");
LogHelper.AppendToLogInfo(x.ToString());
});
}
catch(Exception ex)
{
LogHelper.AppendToLogError(ex.Message);
}
}

让我澄清几点。

  1. 从Window Service或Window Form或任何Web API调用API没有区别。

  2. 若API执行的帐户并没有权限,则上下文很重要。(这可能是你可以检查的第二件事(。

  3. 我要纠正的一件事是

    var task = Task.Run(async () =>
    {
    var x =  await tProxy.GetLastUpdatedDate("branch1");
    LogHelper.AppendToLogInfo(x.ToString());
    });
    task.Wait(); // It seems that you are missing this. 
    

如果您不等待,它将转到下一行,在您的情况下,它将超出范围,因此可能会被垃圾收集。

Win32服务中可能没有正确读取您的配置。Win32服务的工作目录设置与控制台应用程序不同。

尝试将以下代码行放在Main方法的顶部:

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);

相关内容

  • 没有找到相关文章

最新更新