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

问题描述 投票:0回答:2

我在 ASE 中有一个 Web API 以及一个关联的 Web 作业。我尝试从 Web 作业调用此 Web API,但它总是失败:

winhttpException:发生安全错误。

我已经输入了所有与 tls 相关的设置,但仍然收到错误。 对错误有什么建议吗? 还有没有办法在 WebJob 和 Web API 之间共享代码?

azure azure-web-app-service webapi azure-webjobs-continuous
2个回答
1
投票

我能够通过在代码中设置以下内容来解决该问题。这解决了安全错误。

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

0
投票

您可以创建一个控制台应用程序并将其发布为 Azure WebJobs。对于用户名和密码,您可以单击 Azure Web 应用程序概述中的

Get Publish Profile
来获取它们。

然后您可以在控制台应用程序中使用以下代码来调用您的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");

输出如下:

© www.soinside.com 2019 - 2024. All rights reserved.