Solving `Empty reply from server` in DotNet Core
tldr;
If you’re getting
curl: (52) Empty reply from server check that you’ve configured Kestrel correctly.Long version
I’ve started playing with Dotnet Core and Docker and have had a few issues getting started. I’ve had a little bit of experience with Docker, though only a little. I’ve worked with DotNet previously but never with Core.
Environment
The setup I’m using is a Windows laptop running Vagrant. Via Vagrant I’m running an Ubuntu Virtual Machine with the Docker run time installed. Feels a litle like inception.
Key Problem
The key problem that I’ve had getting started was having my Docker container not responding correctly to my curl commands. I get this:
curl: (56) Recv failure: Connection reset by peercurl: (52) Empty reply from server
Given that I’m not all that familliar with Docker or Dotnet Core I decided to remove one of the variables and set up a simple Express app in a different docker container. This validated that the commmand I was using to run the container (
docker run -v /vagrant/dotnetcoretest/src:/src -p 5000: 5000 -d dnctest dotnet run) was binding the ports correctly.
This left a problem with the Dotnet Core web api app. I was surprised that this would be the problem given that I had created the app with the
dotnet new webapigenerator.
Searching around I found that the problem was that by default Kestrel listens on
localhost:5000. To fix this add .UseUrls("http://*:5000") to the WebHostBuilder in Program.cs. It should now look likepublic class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseUrls("http://*:5000")
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
Rebuild the app and run
curl localhost:5000/api/values and you should get ["value1","value2"].
Hi, am a big follower of your blog.All the details are explained in detail manner.keep it up.Thanks for sharing.... Dot Net Training in Chennai
ReplyDeleteHadoop Training in Chennai
The curl: (52) Empty reply from server error can be difficult to diagnose when working with Docker and a new web framework. The article clearly demonstrates the value of isolating potential causes by testing a separate Express application and then investigating Kestrel's network binding configuration. Ensuring that the application listens on the appropriate interface is an important step when making a service accessible outside its container.
DeleteUnderstanding container networking, port mapping, and API configuration is essential when developing and deploying .NET applications. A Dot Net Full Stack Course can help developers build their knowledge of backend services and the practical considerations involved in running web applications.
Configuring ASP.NET Core APIs to communicate correctly with other services is also important when building full-stack applications. Exploring an ASP.NET with Angular Course can help learners understand how backend APIs and frontend applications work together in a complete application architecture.
DeleteHi, I am really happy to found such a helpful and fascinating post that is written in well understandable manner enhance me to learn quickly… Thanks..
ReplyDeleteWeb Designing Training in Chennai | Big Data Analytics Training in Chennai
Thank you a lot for providing individuals with a very spectacular possibility to read critical reviews from this site.
ReplyDeletedot-net training in chennai
I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.its guide me better career.Thank You.
ReplyDeleteI genuinely appreciated understanding it. Sitting tight for some more incredible articles like this from you in the nearing days.
ReplyDeleteHadoop Training in bangalore
Hadoop Training Institute In Bangalore