로컬 네트워크 컴퓨터에 onpremise 웹 서비스 (asp.net core mvc)가 배포되었습니다. 우리는 Azure에 배포 된 App Service를 사용하여 이러한 WEB API를 호출하려고합니다. 그러나 "HTTP"프로토콜을 사용하여 연결하려고 할 때 작업이 취소되었습니다 (). 작업이 취소되었습니다 (). "HTTPS"의 경우 "보안 오류가 발생했습니다. 오류"이 표시됩니다.하이브리드 연결 관리자를 사용하여 HttpClient를 사용하여 onpremise WEB API를 호출하는 Azure 웹 응용 서비스
Azure App Service에서 하이브리드 연결을 생성하여 80 및 443 포트 모두에 온라인으로 표시되는 onpremise 웹 API 서비스에 연결했습니다. 로컬 네트워크 컴퓨터에도 하이브리드 연결 관리자를 설치했습니다.
다음은 코드 위
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;
}
내가 로컬 호스트에서 응용 프로그램을 디버깅 할 경우 잘 작동 (예를 들어, https://xyz.azurewebsite.com) 푸른 앱 서비스에 배포 된 코드를 호출하는 코드이다. 따라서 내가 생각하는 코드에는 아무런 문제가 없습니다. 다음은
웹 API를 코드입니다 : 아래[Route("api/[controller]/[action]")]
public class OnPremiseDataController : Controller
{
[HttpGet]
public string GetData()
{
return "Success";
}
}
및 startup.cs 파일입니다
우리가 사용하는 유사한 시나리오 (웹 애플리케이션 및 온 - 프레미스 SQL) 및 트릭이었다 있었다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();
}
나는 내가 생각 :
다음는 위의 문제의 완벽한 솔루션입니다 끝점을 언급함으로써 SQL Server에 연결할 수 있습니다. 예 : tcp : 연결 문자열의 호스트 이름 만 1433입니다. 비슷한 생각으로 나머지 API를 연결하는 방법에 대한 아이디어가 있습니까? 나는 완전한 이름을 사용하여 시험해 볼 필요가있다. 희망이 작동합니다. –
우리의 연결은 성공적 이었지만 엔드 포인트가 FQDN이 될 때까지 요청이 이루어지지 않았습니다. –
예. FQDN이 나를 위해 작동합니다! HTTPS가 아닌 HTTP 전용입니다. HTTPS를 사용할 때 "보안 오류가 발생했습니다"라는 메시지가 나타납니다. –