簡體   English   中英

從Azure功能調用Asp.Net Web API端點

[英]Calling Asp.Net Web API endpoint from Azure function

我正在嘗試使用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();

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();

您可能最好將整個數據庫清理邏輯放入函數中並使其定時觸發,這樣您就可以完全保留API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM