Ниже приведено полное решение вышеуказанной проблемы:

есть веб-служба onpremise (asp.net core mvc), развернутая на компьютере локальной сети. Мы пытаемся вызвать эти веб-API с помощью службы приложений, развернутой в Azure. Но это дает ошибку времени ожидания илиЗадача была отменена ошибка в случае, когда мы пытаемся подключить его по протоколу «HTTP». В случае "HTTPS" это дает "произошла ошибка безопасности».

Мы создали гибридное соединение в службе приложений Azure для подключения к веб-службе onpremise API, которая отображается в режиме онлайн для портов 80 и 443. Мы также настроили Hybrid Connection Manager на локальной сети.

Ниже приведен фрагмент кода для вызова кода, который развернут в службе приложений Azure (например,https://xyz.azurewebsite.com)

 try
 {
    var httpClient = new HttpClient();
    httpClient.Timeout = TimeSpan.FromMinutes(60);
    httpClient.BaseAddress = new Uri("https://onpremise");
    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
    ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
    //Simple Get Request to test on-premise service
    var response = await httpClient.GetStringAsync("api/OnPremiseData/GetData");
    ViewBag.ResponseText = response;
 }

Приведенный выше код работает нормально, если я отлаживаю приложение с локального хоста. Так что нет проблем с кодом, который я предполагаю.

Ниже приведен фрагмент кода веб-API:

[Route("api/[controller]/[action]")]
public class OnPremiseDataController : Controller
{        
  [HttpGet]
  public string GetData()
  {
    return "Success";
  }
}

и ниже находится файл startup.cs

public void ConfigureServices(IServiceCollection services)
{
  services.AddCors();
  services.AddMvc();            
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.UseCors(options => options.WithOrigins("https://xyz.azurewebsite.com", "https://localhost:44310").AllowAnyMethod().AllowAnyHeader());
  if (env.IsDevelopment())
  {
    app.UseDeveloperExceptionPage();
  }            
  app.UseMvc();                
}

Ответы на вопрос(2)

Ваш ответ на вопрос