Вызовите API Azure из WebJob / общего кода между WebJob и веб-API. - PullRequest
0 голосов
/ 28 октября 2018

У меня есть веб-API в ASE и связанная веб-работа.Я пытаюсь вызвать этот веб-интерфейс API из веб-задания, но всегда происходит сбой с помощью winhttpexception: произошла ошибка безопасности.Я вставил все настройки, связанные с TLS, но все равно получаю сообщение об ошибке.Любые предложения по ошибке?Также есть ли способ поделиться кодом между WebJob и веб-API?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Мне удалось решить проблему, установив в своем коде ниже. Это решило ошибку безопасности.

using(var handler = new HttpClientHandler
{
   ServerCertificateCustomValidationCallback = (sender,certificate,chain,sslPolicyErrors) => true
})
0 голосов
/ 29 октября 2018

Вы можете создать консольное приложение и опубликовать его как Azure WebJobs.Для получения имени пользователя и пароля вы можете щелкнуть Get Publish Profile в обзоре веб-приложения Azure, чтобы получить их.enter image description here

Затем вы можете использовать следующий код в Консольном приложении для вызова вашего 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

...