从 WebJob 调用 Azure API/WebJob 和 Web 之间的共享代码 api
Call Azure API from WebJob/ Shared code between WebJob and web api
我在 ASE 中有一个 Web api 和一个关联的 Web 作业。我试图从 Web 作业中调用此 Web api,但它总是因 winhttpexception 而失败:发生了安全错误。我已经输入了所有与 tls 相关的设置,但仍然出现错误。
关于错误的任何建议?
还有一种方法可以在 WebJob 和 Web 之间共享代码 api?
您可以创建控制台应用程序并将其发布为 Azure WebJobs。对于用户名和密码,您可以在 Azure webapp 概述中单击 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");
输出如下:
我能够通过在 code.This 解决安全错误中设置以下内容来解决问题。
using(var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (sender,certificate,chain,sslPolicyErrors) => true
})
我在 ASE 中有一个 Web api 和一个关联的 Web 作业。我试图从 Web 作业中调用此 Web api,但它总是因 winhttpexception 而失败:发生了安全错误。我已经输入了所有与 tls 相关的设置,但仍然出现错误。 关于错误的任何建议? 还有一种方法可以在 WebJob 和 Web 之间共享代码 api?
您可以创建控制台应用程序并将其发布为 Azure WebJobs。对于用户名和密码,您可以在 Azure webapp 概述中单击 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");
输出如下:
我能够通过在 code.This 解决安全错误中设置以下内容来解决问题。
using(var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (sender,certificate,chain,sslPolicyErrors) => true
})