2021-11-13, 18:17
  #1
Medlem
Hej jag frsker fixa s att jag kan konsumera ett webb api i enighet med https://www.c-sharpcorner.com/articl...g-http-client/

Nr jag sedan frsker kra koden s fr jag
An unhandled exception occurred while processing the request.
ArgumentNullException: Value cannot be null. (Parameter 'value')
koden i kontrollen r:
Kod:
 string Baseurl = "https://localhost:44388/";

        public List<Personal> PersInfo { get; private set; }
        public string PersResponse { get; private set; }

        public async Task<IActionResult> Index()
        {
            List<Personal> Anstallda = new List<Personal>();
            using (var client = new HttpClient())
            {
                ///Hantera Url
                client.BaseAddress = new Uri(Baseurl);
                client.DefaultRequestHeaders.Clear();

                ///Hantera hur request hanteras
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage Res = await client.GetAsync("api/Personal/GetAllStaff");

                if (Res.IsSuccessStatusCode)
                {
                    var PersResponse = Res.Content.ReadAsStringAsync().Result;
                }

            }

            PersInfo = JsonConvert.DeserializeObject<List<Personal>>(PersResponse);

            return View(PersInfo);
        }
"

det finns data i databasen s det knns som att det r ngon ytterligare koppling jag har missat men trots flera frsk kan jag inte riktigt hitta det.
Citera
2021-11-13, 19:05
  #2
Medlem
r du sker p att API'et svarar s som du frvntar dig, p den URL du gr mot? Ditt exempel gr mot "api/Personal/GetAllStaff", medan exemplet i guiden du lnkade till gr mot "api/Employee/GetAllEmployees".

Prova att skriva ut den kompletta adressen som GET-anropet gr mot (dvs printa till konsolen), och testa att klistra in den i browsern och se vad som hnder. Fr det verkar inte vara ngon inloggning eller liknande, s det borde g att se svaret direkt i browsern.

Hur sg felmeddelandet ut, mer exakt? Kom det inte ngon stacktrace?

Och vad jag kan se s ignorerar du eventuella fel som inte ger exception. Om Res.IsSuccessStatusCode r false s borde du inte g vidare med DeserializeObject... Kanske r det den som smller om den fr in ett null-vrde?

Om allt ser bra ut nr du gr browser-testet ovan, och du inte kommer vidare med det andra jag skrivit, kolla d upp vad det finns fr debug-mjligheter i HttpClient. Du br kunna f den att spotta ur sig all metadata om bde request och response.
Citera
2021-11-13, 19:09
  #3
Medlem
Ah, nu tror jag att jag vet vad felet r! Du definierar PersResponse p tv stllen! Nu r inte detta ett sprk jag jobbar med, men svitt jag kan se s kastar du bort datat i det "innre" (dvs det andra) PersResponse-objektet s fort if-satsen r avslutad.

Ta bort "var" p denna rad:
Kod:
var PersResponse = Res.Content.ReadAsStringAsync().Result;

D kommer du anvnda objektet du definierade i brjan av filen.
Citera
2021-11-13, 21:04
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av Nullheap
Hej jag frsker fixa s att jag kan konsumera ett webb api i enighet med https://www.c-sharpcorner.com/articl...g-http-client/

Nr jag sedan frsker kra koden s fr jag
An unhandled exception occurred while processing the request.
ArgumentNullException: Value cannot be null. (Parameter 'value')
koden i kontrollen r:
Kod:
 string Baseurl = "https://localhost:44388/";

        public List<Personal> PersInfo { get; private set; }
        public string PersResponse { get; private set; }

        public async Task<IActionResult> Index()
        {
            List<Personal> Anstallda = new List<Personal>();
            using (var client = new HttpClient())
            {
                ///Hantera Url
                client.BaseAddress = new Uri(Baseurl);
                client.DefaultRequestHeaders.Clear();

                ///Hantera hur request hanteras
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage Res = await client.GetAsync("api/Personal/GetAllStaff");

                if (Res.IsSuccessStatusCode)
                {
                    var PersResponse = Res.Content.ReadAsStringAsync().Result;
                }

            }

            PersInfo = JsonConvert.DeserializeObject<List<Personal>>(PersResponse);

            return View(PersInfo);
        }
"

det finns data i databasen s det knns som att det r ngon ytterligare koppling jag har missat men trots flera frsk kan jag inte riktigt hitta det.

Citat:
Ursprungligen postat av standardpapper
Ah, nu tror jag att jag vet vad felet r! Du definierar PersResponse p tv stllen! Nu r inte detta ett sprk jag jobbar med, men svitt jag kan se s kastar du bort datat i det "innre" (dvs det andra) PersResponse-objektet s fort if-satsen r avslutad.

Ta bort "var" p denna rad:
Kod:
var PersResponse = Res.Content.ReadAsStringAsync().Result;

D kommer du anvnda objektet du definierade i brjan av filen.
Alldeles riktigt,
Kod:
if (Res.IsSuccessStatusCode)
                {
                    var PersResponse = Res.Content.ReadAsStringAsync().Result;
                }
kommer gra variabeln PersResponse lokal i if-blocket, men sen frsker du deserialisera PersResponse som du deklarerade i brjan av din kod och den kommer sklart vara null i det lget.

Har du inte provat debuggern i visual studio? Om inte r det ett bra tillflle att brja nu.
Citera
2022-01-07, 18:43
  #5
Medlem
Citat:
Ursprungligen postat av Proton
Alldeles riktigt,
Kod:
if (Res.IsSuccessStatusCode)
                {
                    var PersResponse = Res.Content.ReadAsStringAsync().Result;
                }
kommer gra variabeln PersResponse lokal i if-blocket, men sen frsker du deserialisera PersResponse som du deklarerade i brjan av din kod och den kommer sklart vara null i det lget.

Har du inte provat debuggern i visual studio? Om inte r det ett bra tillflle att brja nu.

Normalt stt men lyckades inte tolka felmeddelandet riktigt i detta fall.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in