Вызовите API Azure из WebJob/ общего кода между WebJob и веб-API.
У меня есть веб-API в ASE и связанная веб-работа. Я пытаюсь вызвать этот веб-интерфейс API из веб-задания, но всегда происходит сбой с winhttpexception: произошла ошибка безопасности. Я вставил все настройки, связанные с TLS, но все равно получаю сообщение об ошибке. Любые предложения по ошибке? Также есть ли способ поделиться кодом между WebJob и веб-API?
2 ответа
Я смог решить эту проблему, установив в своем коде ниже. Это решило ошибку безопасности.
using(var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (sender,certificate,chain,sslPolicyErrors) => true
})
Вы можете создать консольное приложение и опубликовать его как Azure WebJobs. Для имени пользователя и пароля вы можете нажать Get Publish Profile
в обзоре веб-приложения Azure, чтобы получить их.
Затем вы можете использовать следующий код в Консольном приложении для вызова вашего 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");