Wir haben onpremise Web-Service (asp.net Core mvc) auf lokalen Netzwerk-Rechner bereitgestellt. Wir versuchen, diese WEB-API mithilfe des auf Azure bereitgestellten App-Service aufzurufen. Aber es gibt Timeout-Fehler oder Task wurde abgebrochen Fehler im Fall, wenn wir versuchen, es mit "HTTP" -Protokoll verbinden. Im Falle von "HTTPS" gibt es "Sicherheitsfehler aufgetreten Fehler".Azure-Web-App-Dienst zum Aufruf onpremise WEB API unter Verwendung von HttpClient mit Hybrid-Verbindungs-Manager
Wir haben eine hybride Verbindung im Azure App Service erstellt, um eine Verbindung zum onpremise Web-API-Dienst herzustellen, der sowohl für den 80 als auch den 443 Port online angezeigt wird. Wir haben den Hybrid Connection Manager auch auf dem lokalen Netzwerkcomputer eingerichtet.
Unten ist der Code-Snippet für Code aufrufen, die auf Azure App-Service bereitgestellt wird (z 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;
}
Above Code funktioniert gut, falls ich Anwendung debuggen von localhost. Es gibt also kein Problem mit Code, den ich vermute.
Im Folgenden finden Sie web api Code-Schnipsel:
[Route("api/[controller]/[action]")]
public class OnPremiseDataController : Controller
{
[HttpGet]
public string GetData()
{
return "Success";
}
}
und unten ist startup.cs Datei
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();
}
Ich glaube, ich bin Verbindung zum SQL Server nur durch Erwähnen des Endpunkts herstellen. Z.B. tcp: onlyhostname, 1433 in der Verbindungszeichenfolge. Irgendeine Idee, wie man Ruhe API in ähnlicher Weise verbindet? Ich muss es mit einem vollständig qualifizierten Namen versuchen. Ich hoffe, es wird funktionieren. –
Unsere Verbindung war ebenfalls erfolgreich, aber die Anforderungen wurden erst erfüllt, als der Endpunkt der FQDN war. –
Ja. FQDN funktioniert für mich !! aber nur für HTTP nicht für HTTPS. Wenn ich HTTPS verwende, wird "Ein Sicherheitsfehler ist aufgetreten" angezeigt. –