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}











share|improve this question




























    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}











    share|improve this question


























      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}











      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 at 16:02









      Kirk Larkin

      18.6k33654




      18.6k33654










      asked Nov 22 at 15:57









      Shubhrajit Biswas

      1




      1
























          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



          Docker DNS



          If you are using Ubuntu, you can try this setting:



          # /etc/docker/daemon.json
          {
          "dns": ["8.8.8.8"]
          }





          share|improve this answer





















          • 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


















          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.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            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

























            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



            Docker DNS



            If you are using Ubuntu, you can try this setting:



            # /etc/docker/daemon.json
            {
            "dns": ["8.8.8.8"]
            }





            share|improve this answer





















            • 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















            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



            Docker DNS



            If you are using Ubuntu, you can try this setting:



            # /etc/docker/daemon.json
            {
            "dns": ["8.8.8.8"]
            }





            share|improve this answer





















            • 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













            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



            Docker DNS



            If you are using Ubuntu, you can try this setting:



            # /etc/docker/daemon.json
            {
            "dns": ["8.8.8.8"]
            }





            share|improve this answer












            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



            Docker DNS



            If you are using Ubuntu, you can try this setting:



            # /etc/docker/daemon.json
            {
            "dns": ["8.8.8.8"]
            }






            share|improve this answer












            share|improve this answer



            share|improve this answer










            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


















            • 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












            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.






            share|improve this answer

























              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.






              share|improve this answer























                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.






                share|improve this answer












                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.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 23 at 5:10









                Tao Zhou

                4,34021028




                4,34021028






























                    draft saved

                    draft discarded




















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    What visual should I use to simply compare current year value vs last year in Power BI desktop

                    Alexandru Averescu

                    Trompette piccolo