【问题标题】:Calling Asp.Net Web API endpoint from Azure function从 Azure 函数调用 Asp.Net Web API 端点
【发布时间】:2017-08-01 02:13:15
【问题描述】:

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

【问题讨论】:

  • 您如何/什么添加了引用以便可以使用AuthenticationToken?谢谢。
  • @SkorunkaFrantišek 我添加了using System.Net.Http;,因为它是HttpClient 类的DefaultRequestHeaders 属性的一部分,我们可以在System.Net.Http 命名空间下找到HttpClient

标签: c# azure asp.net-web-api azure-functions asp.net-webhooks


【解决方案1】:

您最好将整个数据库清理逻辑放在函数中并使其触发计时器,这样您的 API 就完全不受它的影响。

【讨论】:

    【解决方案2】:

    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 将在不同的 url 上。另外,我尝试调用我的令牌端点,但它没有返回令牌。
    • 我以 Bearer 身份验证为例。这取决于您为 API 配置的内容。如果您在某处进行了身份验证,则可以将其复制到 Function App。
    • 我去看看。非常感谢。
    猜你喜欢
    • 2017-01-27
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2019-06-23
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多