Home > Enterprise >  .NET Core GetFromJsonAsync exits with no error or debugging information
.NET Core GetFromJsonAsync exits with no error or debugging information

Time:02-02

I am trying to debug a request by GetFromJsonAsync which is supposed to fetch data from a Flask API and convert to JSON within a .NET Core cli app.

The issue I am having however is that after performing the request the cli app simply exits with no error. I have tried implementing try/catch block but nothing shows up there.

the Flask endpoint builds jsonifies a number of uuids and messages from Postgres and returns them to the client.

As GetFromJsonAsync is asynchronous I have tried making the Flask endpoint likewise but that has not seemed to help at all. The latter works fine and has been validated with curl.

I know the call executes as I can see it in my web server logs.

A similar call which simply returns plain javascript object {"foo": "bar"} works fine which is why I think this could by an async issue but I cannot see any errors etc to troubleshoot. I have placed a breakpoint on the foreach after the call but this is never hit.

What am I missing here?

    public static async void GetMessages()
    {
        ConfigureHeaders();
        try
        {
            var client = Client;
            var res = await Client.GetFromJsonAsync<Received>(Url   "/api/chat/message"); // stops here
            foreach (var c in res!.messages) // breakpoint here is never hit
                Console.WriteLine(c);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }
    }


public class Received
{
    public Dictionary<string,string> messages { get; set; }
}

Flask

@message.get("/api/chat/message")
@csrf.exempt
async def get_messages():
    new_msgs = {}
    msgs = await get_unreplied() # DB gets called from another function here
    try:
        for m in msgs:
            new_msgs[m.id] = m.message
        if len(new_msgs) != 0:
            return jsonify(new_msgs)
        else:
            return jsonify("no messages")
    except Exception as e:
        print(str(e))

This returns...

{
  "id_foo1": "message_bar1", 
  "id_foo2": "message_bar2"
}

CodePudding user response:

Best guess: your Main function is not awaiting the call to GetMessages

public async Task<int> Main(string []args)
{
    await GetMessages();  
}
  •  Tags:  
  • Related