2017-03-10 26 views
2

我正在嘗試開發使用Azure函數的以下方案。從Azure函數調用Asp.Net Web API端點

我開發了處理數據庫相關操作的Asp.Net Web API。現在,我想實現一個調度程序,比如每天運行一次的功能,並將清理數據庫中的垃圾數據。我已經在Web API中創建了一個端點,但我想定期執行它,所以我認爲要使用Azure函數的TimerTrigger函數來實現調度程序,有沒有辦法在TimerTrigger函數中調用我的web api的端點。

如何在Azure函數中處理我的api身份驗證?

感謝

更新:

基於米哈伊爾的答案,最後我用下面的代碼獲得令牌:

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

如何/你是什麼添加引用,所以你可以使用'AuthenticationToken'?謝謝。 –

+0

@SkorunkaFrantišek我添加了'使用System.Net.Http;',因爲它是'HttpClient'類的'DefaultRequestHeaders'屬性的一部分,我們可以在'System.Net.Http'命名空間下找到'HttpClient'。 – Rinkesh

回答

2

Azure的功能是在正常的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(); 
+0

感謝您快速回答。我只是想知道如何獲得令牌,因爲我的API將在不同的網址。此外,我試圖調用我的令牌端點,但它沒有返回令牌。 – Rinkesh

+0

我給了承載認證只是一個例子。這取決於您爲API配置的內容。如果您的身份驗證工作在某處,您可以將其複製到功能應用程序。 – Mikhail

+0

我來看看。非常感謝。 – Rinkesh