Unable to call external api from webaplication hosted in docker
up vote
0
down vote
favorite
My webapplication is running on docker and trying to call external api which is hosted on IIS and I am not able to access external api. Throwing below error : but when my webapplication is running on local iis then able to connect api and get the response. Please help me on this.
InnerException {System.Net.Http.HttpRequestException: No such host is known ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, enter image description hereCancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)} System.Exception {System.Net.Http.HttpRequestException}
.net docker asp.net-web-api asp.net-core .net-core
add a comment |
up vote
0
down vote
favorite
My webapplication is running on docker and trying to call external api which is hosted on IIS and I am not able to access external api. Throwing below error : but when my webapplication is running on local iis then able to connect api and get the response. Please help me on this.
InnerException {System.Net.Http.HttpRequestException: No such host is known ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, enter image description hereCancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)} System.Exception {System.Net.Http.HttpRequestException}
.net docker asp.net-web-api asp.net-core .net-core
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
My webapplication is running on docker and trying to call external api which is hosted on IIS and I am not able to access external api. Throwing below error : but when my webapplication is running on local iis then able to connect api and get the response. Please help me on this.
InnerException {System.Net.Http.HttpRequestException: No such host is known ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, enter image description hereCancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)} System.Exception {System.Net.Http.HttpRequestException}
.net docker asp.net-web-api asp.net-core .net-core
My webapplication is running on docker and trying to call external api which is hosted on IIS and I am not able to access external api. Throwing below error : but when my webapplication is running on local iis then able to connect api and get the response. Please help me on this.
InnerException {System.Net.Http.HttpRequestException: No such host is known ---> System.Net.Sockets.SocketException: No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, enter image description hereCancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task1 getTask)} System.Exception {System.Net.Http.HttpRequestException}
.net docker asp.net-web-api asp.net-core .net-core
.net docker asp.net-web-api asp.net-core .net-core
edited Nov 22 at 16:02
Kirk Larkin
18.6k33654
18.6k33654
asked Nov 22 at 15:57
Shubhrajit Biswas
1
1
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
I think the problem is Docker DNS server. You can try to use a real DNS server such as 8.8.8.8
If you are using Docker on Windows, you can try to update DNS setting 8.8.8.8
If you are using Ubuntu, you can try this setting:
# /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
add a comment |
up vote
0
down vote
For macOs and Windows, you could try host.docker.internal.
Replace the localhost
with host.docker.internal
.
public async Task<IActionResult> About()
{
//ViewData["Message"] = "Your application description page.";
HttpClient client = new HttpClient();
//var result = await client.GetStringAsync(@"http://localhost/IISWindows/home/test");
var result = await client.GetStringAsync(@"http://host.docker.internal/IISWindows/home/test");
ViewData["Message"] = result;
return View();
}
If you are running docker in linux, you could try build a new container to redirect the request to host, for more information refer docker-host.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
I think the problem is Docker DNS server. You can try to use a real DNS server such as 8.8.8.8
If you are using Docker on Windows, you can try to update DNS setting 8.8.8.8
If you are using Ubuntu, you can try this setting:
# /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
add a comment |
up vote
0
down vote
I think the problem is Docker DNS server. You can try to use a real DNS server such as 8.8.8.8
If you are using Docker on Windows, you can try to update DNS setting 8.8.8.8
If you are using Ubuntu, you can try this setting:
# /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
add a comment |
up vote
0
down vote
up vote
0
down vote
I think the problem is Docker DNS server. You can try to use a real DNS server such as 8.8.8.8
If you are using Docker on Windows, you can try to update DNS setting 8.8.8.8
If you are using Ubuntu, you can try this setting:
# /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
I think the problem is Docker DNS server. You can try to use a real DNS server such as 8.8.8.8
If you are using Docker on Windows, you can try to update DNS setting 8.8.8.8
If you are using Ubuntu, you can try this setting:
# /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
answered Nov 23 at 2:38
Khai Nguyen
485211
485211
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
add a comment |
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
thanks Khai for your support but in my case my machine was blocked to call any outer api from docker container. So our security team adds my machine to docker exception list and then started working but taking bit time to get response.
– Shubhrajit Biswas
Nov 23 at 3:25
add a comment |
up vote
0
down vote
For macOs and Windows, you could try host.docker.internal.
Replace the localhost
with host.docker.internal
.
public async Task<IActionResult> About()
{
//ViewData["Message"] = "Your application description page.";
HttpClient client = new HttpClient();
//var result = await client.GetStringAsync(@"http://localhost/IISWindows/home/test");
var result = await client.GetStringAsync(@"http://host.docker.internal/IISWindows/home/test");
ViewData["Message"] = result;
return View();
}
If you are running docker in linux, you could try build a new container to redirect the request to host, for more information refer docker-host.
add a comment |
up vote
0
down vote
For macOs and Windows, you could try host.docker.internal.
Replace the localhost
with host.docker.internal
.
public async Task<IActionResult> About()
{
//ViewData["Message"] = "Your application description page.";
HttpClient client = new HttpClient();
//var result = await client.GetStringAsync(@"http://localhost/IISWindows/home/test");
var result = await client.GetStringAsync(@"http://host.docker.internal/IISWindows/home/test");
ViewData["Message"] = result;
return View();
}
If you are running docker in linux, you could try build a new container to redirect the request to host, for more information refer docker-host.
add a comment |
up vote
0
down vote
up vote
0
down vote
For macOs and Windows, you could try host.docker.internal.
Replace the localhost
with host.docker.internal
.
public async Task<IActionResult> About()
{
//ViewData["Message"] = "Your application description page.";
HttpClient client = new HttpClient();
//var result = await client.GetStringAsync(@"http://localhost/IISWindows/home/test");
var result = await client.GetStringAsync(@"http://host.docker.internal/IISWindows/home/test");
ViewData["Message"] = result;
return View();
}
If you are running docker in linux, you could try build a new container to redirect the request to host, for more information refer docker-host.
For macOs and Windows, you could try host.docker.internal.
Replace the localhost
with host.docker.internal
.
public async Task<IActionResult> About()
{
//ViewData["Message"] = "Your application description page.";
HttpClient client = new HttpClient();
//var result = await client.GetStringAsync(@"http://localhost/IISWindows/home/test");
var result = await client.GetStringAsync(@"http://host.docker.internal/IISWindows/home/test");
ViewData["Message"] = result;
return View();
}
If you are running docker in linux, you could try build a new container to redirect the request to host, for more information refer docker-host.
answered Nov 23 at 5:10
Tao Zhou
4,34021028
4,34021028
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434581%2funable-to-call-external-api-from-webaplication-hosted-in-docker%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown