【发布时间】:2020-05-14 16:40:53
【问题描述】:
我在Asp.net Core 中创建了两个Web API,一个是要部署在DMZ 服务器上的包装服务,另一个是可以访问我们的非DMZ 数据库的核心服务。我面临的问题是我无法在两个服务之间进行通信。
两者都通过 docker 在本地机器上运行。当我尝试点击在 url 上运行的核心服务时:https://localhost:56788/Rewards thorugh HttpClient/WebRequest 我收到消息
No connection could be made because the target machine actively refused it.
DMZ 控制器逻辑
[Route("[controller]")]
[ApiController]
public class RewardsController : ControllerBase
{
[HttpGet]
public string Get()
{
string response = string.Empty;
//using (var client = new HttpClient())
//{
// client.BaseAddress = new Uri("http://localhost:5000/");
// //HTTP GET
// var responseTask = client.GetAsync("Rewards");
// responseTask.Wait();
// var result = responseTask.Result;
// if (result.IsSuccessStatusCode)
// {
// response = result.ToString();
// }
// else //web api sent error response
// {
// //log response status here..
// response = "Error";
// }
//}
string sURL = "https://localhost:56788/Rewards";
WebRequest wrPostURL = WebRequest.Create(sURL);
wrPostURL.Method = "GET";
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
using (HttpWebResponse webresponse = wrPostURL.GetResponse() as HttpWebResponse)
{
Encoding enc = System.Text.Encoding.GetEncoding("utf-8");
StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), enc);
var jsonResponse = loResponseStream.ReadToEnd();
loResponseStream.Close();
webresponse.Close();
}
return response;
}
}
非 DMZ 控制器逻辑
[Route("[controller]")]
[ApiController]
public class RewardsController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello";
}
}
更新 这个问题是由于码头工人。当我将两个 API 部署到 IIS 时,它会正常工作,但我必须使用 Docker 来完成
【问题讨论】:
标签: asp.net docker asp.net-core asp.net-web-api