Home > Software engineering >  Starting a web server using C# and .net in Visual Studio
Starting a web server using C# and .net in Visual Studio

Time:06-15

I am using the below code to start a web server that should be open to listen always but it is executing only once, I am deploying this in AKS - the container is not staying in running state, it is exiting after completing the job i.e., printing the response.

Please help me understand where I am doing wrong or my understanding itself is not right. May be this is not the right piece of code to use if I want the container to be always running as a web server that listens to requests from other apps in the project.

string baseAddress = "http://localhost:9000/";

// Start OWIN host 
using (WebApp.Start<Startup>(url: baseAddress))
{
    // Create HttpClient and make a request to api/values 
    HttpClient client = new HttpClient();

    var response = client.GetAsync(baseAddress   "api/values").Result;

    System.Console.WriteLine(response);
    System.Console.WriteLine(response.Content.ReadAsStringAsync().Result);
    System.Console.ReadLine();
}

CodePudding user response:

If you want to listen incoming http requests, try something like that with HttpListener:

var listener = new HttpListener();
listener.Prefixes.Add("http://*:9000/api/values");
listener.Start();
while (true)
{
    HttpListenerContext context = listener.GetContext();
    HttpListenerRequest request = context.Request;
    
    // do something here with request
    
    // default OK response
    context.Response.StatusCode = 200;
    context.Response.OutputStream.Write(Array.Empty<byte>(), 0, 0);
    context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
    context.Response.Close();
}

CodePudding user response:

If your code is already working for once. Thats should be help for loop

while(true){
    var response = client.GetAsync(baseAddress   "api/values").Result;
System.Console.WriteLine(response.Content.ReadAsStringAsync().Result);
}
  • Related