从WebJob调用Azure API / WebJob和Web API之间的共享代码

时间:2018-10-28 18:09:52

标签: api azure web azure-web-sites azure-webjobs-continuous

我在ASE中有一个Web API和关联的Web作业。我正在尝试从Web作业中调用此Web api,但是它始终会因winhttpexception而失败:发生了安全错误。我已经输入了所有与tls相关的设置,但仍然收到错误消息。 对错误有任何建议吗? 还可以在WebJob和Web API之间共享代码吗?

2 个答案:

答案 0 :(得分:0)

您可以创建一个控制台应用程序并将其发布为Azure WebJobs。对于用户名和密码,您可以单击Azure Webapp概述中的Get Publish Profile以获取它们。 enter image description here

然后,您可以在Console App中使用以下代码来调用Azure Webapi。

string userName = "$xxxxxx";
string userPassword = "xxxxxxxxxxxxx";
string webAppName = "xxxxxx";
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{userName}:{userPassword}"));
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
    var baseUrl = new Uri($"https://{webAppName}.azurewebsites.net/api/values");
    var result = client.GetAsync(baseUrl).Result;
    if (result.IsSuccessStatusCode)
    {
        var readTask = result.Content.ReadAsStringAsync();
        readTask.Wait();
        var value = readTask.Result;
        Console.WriteLine(value.ToString());
    }
}
Console.WriteLine("run successfully");

输出如下: enter image description here

答案 1 :(得分:0)

我可以通过在代码中设置以下内容来解决此问题。此操作解决了安全性错误。

using(var handler = new HttpClientHandler
{
   ServerCertificateCustomValidationCallback = (sender,certificate,chain,sslPolicyErrors) => true
})