Jak hledate chyby v blazor aplikacich? rubrika: Programování: .Net

3 petrnev
položil/-a 10.9. 11:52

Ahoj,

zkousim psat nejakou aplikaci v blazoru (client webassembly) a obcas mi vypadne v konsoli prohlizece chyba:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
  Unhandled exception rendering component: Object reference not set to an instance of an object.
  System.NullReferenceException: Object reference not set to an instance of an object.
    at Appname.Client.Components.UseCase1.Component1.<BuildRenderTree>b__18_0 
    (Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder2) [0x0002b] in 
    C:\Appname\Client\Components\UseCase1\Component1.razor:0 
....

Vetsinou najdu neinicializovany objekt hned, ale uz se mi stalo, ze jsem ho hledal pul hodiny...

Kouknul jsem do adresare obj na generovany kod, ale nedokazu urcit, na ktere radce je chyba.

Take jsem zkousel debuggovat v chromu pres ten postup s alt+D, ale watch pise, ze promenna je inicializovana, ale stejne to vyhodi exceptionu.

Chtel bych se zeptat, jestli na to je nejaky postup?

Dik moc za odpoved.

odkaz
10 harrison314
odpověděl/-a 10.9. 17:28

Problem asi nebude vo frameworku alebo generovanom kode. NullReferenceException moze vzniknut s cohokolvek v danom okoli.

Take jsem zkousel debuggovat v chromu pres ten postup s alt+D, ale watch pise, ze promenna je inicializovana, ale stejne to vyhodi exceptionu.

Aka premenna a kde? Je to ta spravna? Nie je problem vo vnutri inicializovanej premennej?

Chtel bych se zeptat, jestli na to je nejaky postup?

  1. Debug a lepsie hladat.
  2. Zapnut logovanie na klientovi. - https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/logging?view=aspnetcore-3.1
  3. Zapnut si nullable refernce types (je to typ na blazore som to este neskusal).
  4. Skusat skusat skusat... tu to bude pravdepodobne nejaka blbost.

Komentáře

  • petrnev : Dik moc za odpoved, logovani zapnute mam, nullable jsem zkousel, ale zadna zmena. Komponentu mam rozdelenou do 2 souboru (.razor a .razor.cs), pri debug v chromu si dam breakpoint na prvni radek .razor, preskacu a chybu mi vyhodi az pri odchodu ze souboru na js fci: var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={} ... este 1000 radku.. :-) ()}}noExitRuntime=true;run(); Pouzivam i fluxor... 11.9. 10:34
  • harrison314 : Zbav sa Fluxoru a uvidis. Je mozne ze si niekde zavesil do JS callback. 11.9. 11:41
  • harrison314 : A tiez ma napadlo, ze sa mozno niekde nevola Dispose na niecom na com by sa malo (a s tym suvisaice odregistrovanie od callbakov v JS). 12.9. 8:08
  • petrnev : jo, vyradil jsem ze vsech komponent callbacky vracejici Task a je to ok. Dik za radu. (aha, tak to neni OK). Tak snad na to nekdy prijdu... ;) 12.9. 8:56
  • harrison314 : Ale myslel som JS callbacky. 12.9. 14:01
  • petrnev : Dik moc za rady, nakonec jsem to predelal... ;) 15.9. 10:23

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.