5

我正在尝试使用 Azure 函数开发以下场景。

我开发了处理数据库相关操作的 Asp.Net Web API。现在,我想实现一个类似调度程序的功能,它每天运行一次,并从数据库中清理垃圾数据。我已经在我的 Web API 中为此创建了一个端点,但我想定期执行它,所以我认为使用 Azure 函数的 TimerTrigger 函数来实现调度程序,有没有办法在 TimerTrigger 函数中调用我的 Web api 的端点。

如何在 Azure 函数中处理我的 api 身份验证?

谢谢

更新:

根据 mikhail 的回答,最后我使用以下代码获得了令牌:

var client = new HttpClient();
client.BaseAddress = new Uri(apirooturl);

var grant_type = "password";
var username = "username";
var password = "password";

var formContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("grant_type", grant_type),
    new KeyValuePair<string, string>("username", username),
    new KeyValuePair<string, string>("password", password)
});

var token = client.PostAsync("token", formContent).Result.Content.ReadAsAsync<AuthenticationToken>().Result;

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token.token_type, token.access_token);

var response = await client.GetAsync(apiendpoint);
var content = await response.Content.ReadAsStringAsync();
4

2 回答 2

5

Azure Function 在普通的 Web 应用程序中运行,因此您几乎可以在其中执行任何操作。假设你在 C# 上,函数体可能看起来像

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", token);

var response = await client.GetAsync(url);
var content = await response.Content.ReadAsStringAsync();
于 2017-03-10T17:02:02.293 回答
0

您最好将整个数据库清理逻辑放在函数中并使其触发计时器,这样您就可以完全避免 API。

于 2018-08-08T11:22:00.900 回答