Aspnetcore: рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдЕрдЧре░ 2019  ┬╖  51рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/aspnetcore

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдореЗрдВ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рдмрд┐рдВрджреБ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдкреНрд░рдмрдВрдзрди рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░реЗрдВ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдЕрдкрд╡рд╛рдж рд▓реЙрдЧ рдХрд░реЗрдВ) .

  • рдореИрдВрдиреЗ https://docs.microsoft.com/en-us/aspnet/core/blazor/handle-errors?view=aspnetcore-3.0 рдкрдврд╝рд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡реИрд╢реНрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝рдиреЗ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓реА (рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ)
  • рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ https://remibou.github.io/Exception-handling-in-Blazor/ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдФрд░ рдкреВрд░реЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред

рддреЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 8 рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдпрд╛ рдЖрд░рдЯреАрдПрдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж !

Components Big Rock affected-most area-blazor enhancement severity-major

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рд╕реЗрд╡рд░ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдРрдк рдиреЗ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдХреЛрд╢рд┐рд╢-рдкрдХрдбрд╝ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рди рд╣реА рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ), "рдЕрди-рдЕрдиреБрдорд╛рдирд┐рдд" рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

1. рдЪреБрдиреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╣реИред
2. рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ "рджреЛрд╕реНрддрд╛рдирд╛" GUI рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдВ рдпрд╛ рдЙрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрди-рд╣реИрдВрдбрд▓ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рдж рдРрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдРрдк рдпреВрдЖрд░рдПрд▓ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдПрдВ) рдпрд╛ рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВ рдФрд░ рд╕рднреА рд░рд╛рдЬреНрдп рдХреЛ рдвреАрд▓рд╛ рдХрд░реЗрдВ (рдЬреЛ рдХрднреА-рдХрднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрдк рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕реЗ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╕рднреА 51 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рднреА рд╣реИрдВрдбрд▓ рди рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЕрдиреНрдпрдерд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдФрд░ рд╣рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рд▓реЙрдЧреНрд╕ рдХреЛ рджреЗрдЦрдХрд░ рдпрд╣рд╛рдВ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдареАрдХ рд╣реИ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ ILogger рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ? рдФрд░ рдЗрд╕рдХреЗ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдореБрдЭреЗ рдЕрдкрд╡рд╛рдж рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛? (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рд╕реВрдЪрдирд╛ рджрд┐рдЦрд╛рдПрдВ, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рднреЗрдЬреЗрдВ)
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЕрдЧрд░ рдорд┐рд▓рддреА рд╣реИ рддреЛ рд╡рд╣ рд╣реИ рдпрд╣ рдкреИрдХреЗрдЬ https://github.com/BlazorExtensions/Logging
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рднреА, рдЕрдЧрд░ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ, рддреЛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рддреЛ рдЕрдЧрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ?

рдЖрдкрдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдпреЗ рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдХреЛрдИ рднреА рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рджрд╛рддрд╛: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2#built -in-logging-providers рдФрд░ рд╕рд╛рде рд╣реА рд╕рдореБрджрд╛рдп рд╡рд┐рдХрд╕рд┐рдд рдкреНрд░рджрд╛рддрд╛ ( https://github.com/aspnet/Extensions/tree/master/src/Logging#providers) рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрдХрд┐рди рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рднреА, рдЕрдЧрд░ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ, рддреЛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд░реИрд╢ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рдмреНрд▓реЙрдХ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╣рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ try-catch рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЕрдирдЪрд╛рд╣реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рд╕рд┐рд░реНрдл рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ WebAssemblyRenderer рдХрд╛ рдХреЛрдб рд╣реИ

protected override void HandleException(Exception exception)
{
    Console.Error.WriteLine($"Unhandled exception rendering component:");
    if (exception is AggregateException aggregateException)
    {
        foreach (var innerException in aggregateException.Flatten().InnerExceptions)
        {
            Console.Error.WriteLine(innerException);
        }
    }
    else
    {
        Console.Error.WriteLine(exception);
    }
}

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
https://remibou.github.io/Exception-handling-in-Blazor/

рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ ...

рдореИрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХреВрдВ ...

{
   IsLoading = true;
   await SomeAsync();
}
finally
{
   IsLoading = false;
   //force rerender after exception
    StateHasChanged();
}

рдпрджрд┐ SomeAsync рд╡рд┐рдзрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ рддреЛ рдореЗрд░рд╛ IsLoading varialbe рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реНрдпреВ рд░реАрд░реЗрдВрдбрд░ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдВрддрддрдГ рдмреНрд▓реЙрдХ рдореЗрдВ SetStateHasChanged рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдВрдд рдореЗрдВ ILogger рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрддрд╛ рд╣реВрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреЛрдб рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ)ред
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рд▓реЙрдЧрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЖрдИрд▓реЙрдЧрд░ рднреА рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░, рдпрд╣ рдПрдХ рдПрдирдПрд▓рдУрдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ)

рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рдмрдВрдзрди рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рддреНрдпрд╛рдЧ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдмреНрд▓реЗрдЬрд╝рд░ рдХрд╛ рддрд░реНрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рдбрд╛рд▓рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ ILogger рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реВрдВрд╕рднреА рдШрдЯрдХ рдореЗрдВред

рд╕рд┐рд╡рд╛рдп рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд▓рд╛рдкрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ .. рдЬрдм рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рд╕рднреА рдЕрдирдЪрд╛рд╣реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕реНрдерд╛рди рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ .. рдпрд╛ рддреЛ рдЗрд╕реЗ рдкреЙрдкрдЕрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЗрд╕реЗ рдХрд╣реАрдВ рд▓реЙрдЧ рдХрд░реЗрдВ, рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА .. рдРрдк рд╕реНрдЯреЗрдЯ рдХреЛ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдП рдмрд┐рдирд╛
рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдореЗрдВ рдЕрдирдЪрд╛рд╣реЗ рдЕрдкрд╡рд╛рдж рдШрдЯрдирд╛ рдХреА рддрд░рд╣ рдХреБрдЫ
https://docs.microsoft.com/en-us/dotnet/api/system.appdomain.unhandledexception?redirectedfrom=MSDN&view=netframework-4.8

рдХреНрдпрд╛ ILogger рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ?

@SteveSandersonMS рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ
https://github.com/aspnet/AspNetCore/issues/13452#issuecomment -535227410
рдЕрдкрд╡рд╛рдж (рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдореЗрдВ) рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐ред рд░рд╛рдЗрдЯрд▓рд╛рдЗрди, рд╡реЗ ILogger рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рдЯреЗрдХреНрд╕реНрдЯрд╡рд╛рдЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреНрд░реБрдЯрд┐
https://remibou.github.io/Exception-handling-in-Blazor/
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдорд┐рд▓рддрд╛ рд╣реИ .. рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рд╣реИред
рдореИрдВ рдЕрдкрд╡рд╛рдж рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░ рд╕рдХреВрдВ (рдпрд╛ рдЬреЛ рднреА рд╣реЛ)

@rborosak рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рд╕реЗрд╡рд░ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдРрдк рдиреЗ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдХреЛрд╢рд┐рд╢-рдкрдХрдбрд╝ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рди рд╣реА рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ), "рдЕрди-рдЕрдиреБрдорд╛рдирд┐рдд" рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

1. рдЪреБрдиреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╣реИред
2. рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ "рджреЛрд╕реНрддрд╛рдирд╛" GUI рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдВ рдпрд╛ рдЙрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрди-рд╣реИрдВрдбрд▓ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рдж рдРрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдРрдк рдпреВрдЖрд░рдПрд▓ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдПрдВ) рдпрд╛ рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВ рдФрд░ рд╕рднреА рд░рд╛рдЬреНрдп рдХреЛ рдвреАрд▓рд╛ рдХрд░реЗрдВ (рдЬреЛ рдХрднреА-рдХрднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрдк рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕реЗ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП)ред

@hagaygo рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рд╛рд░рд╛рдВрд╢!

@SteveSandersonMS рдХреГрдкрдпрд╛ рдЗрд╕реЗ 3.1.x рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреЗ рд▓рд┐рдП рдорд╛рдиреЗрдВ! рдХреГрдкрдпрд╛ рдЗрд╕реЗ 5.0.0 . рдкрд░ рди рд▓реЗ рдЬрд╛рдПрдВ

рдирдорд╕реНрддреЗ,

рдбреЗрд╡рд▓рдкрд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рд░реНрдХрд┐рдЯ рдЯреВрдЯрдиреЗ рдкрд░ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

image

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реИрд╕реЗ рднреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИ рдФрд░ рдкреЗрдЬ рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдФрд░ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЦреЛрд▓реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред

@SteveSandersonMS рдХреНрдпрд╛ рдЖрдк рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП app.UseExceptionHandler() рдХрд╛рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ?

рдореИрдВрдиреЗ рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рджреЗрдЦреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореЗрд░рд╛ рдХрд╕реНрдЯрдо ErrorHandler рдореЗрд░реЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЬрд╛ рд░рд╣реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЛрдб

Startup.cs :

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
{
    ...
    app.UseExceptionHandler(new ExceptionHandlerOptions { ExceptionHandler = ErrorHandler.HandleError });
    ...
}

ErrorHandler.cs :

public static async Task HandleError(HttpContext context)
{
    var error = context.Features.Get<IExceptionHandlerFeature>()?.Error;
    var message = error?.Message ?? "[EXCEPTION NOT FOUND]";        
    return;
}

рдПрдХ рдЙрджрд╛рд╣рд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореЗрд░рд╛ рднрдВрдбрд╛рд░ рдЗрд╕ рддрд░рд╣ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ:
The instance of entity type cannot be tracked because another instance with the same key value for {'Id'} is already being tracked

рдореЗрд░рд╛ рдПрдорд╡реАрд╕реА рд╕рдорд╛рдзрд╛рди рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЗрд╕реЗ 5.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреВрдЫрддрд╛рдЫ рдХреЛ рдбрд┐рд╕реНрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рддреНрд░реБрдЯрд┐ рд╕реАрдорд╛ рд╣реИ ред рдореИрдВ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░, рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЙрд╕ рдШрдЯрдХ рдХреЗ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЛ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдмрдЧ рдореЗрд░реЗ рдкреВрд░реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рд░ рди рд╕рдХреЗред рдЕрднреА рдХреЛрдИ "рдХреЛрд╢рд┐рд╢ рдкрдХрдбрд╝рдиреЗ рдХреА рдЬрдЧрд╣" рдирд╣реАрдВ рд╣реИ - рдкреВрд░реЗ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдмреНрд▓реЗрдЬрд╝рд░ рд░реЗрдВрдбрд░рд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдкреЗрдбрд╝ рдореЗрдВ рдХреБрдЫ рднреА рдЧрдбрд╝рдмрдбрд╝ рд╣реЛрдиреЗ рдкрд░ рдорд░ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП +1ред
рд╕рднреА рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рдмреНрд▓реЙрдХ рд░рдЦрдирд╛ рдПрдХ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рдерд╛ред рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рдореИрдВ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рддрдп рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдкрд╡рд╛рдж рдХреЛ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрджрд┐ рдореИрдВ рдкреВрд░рд╛ рд╕рдВрджреЗрд╢ (рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдкрд╡рд╛рдж) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдХреЗрд╡рд▓ "рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ) .

рдЕрд╕рд▓ рдореЗрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдШрдЯрдХрдмреЗрд╕рдПрдХреНрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдШрдЯрдХрдмреЗрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдСрдирдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреНрдб (рдПрд╕рд┐рдВрдХ), рдСрди рдкреИрд░рд╛рдореАрдЯрд░рд╕реЗрдЯ (рдПрд╕рд┐рдВрдХ) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ ...
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╣рдЯрд╛рдПрдВ, ...)

рдХреНрдпрд╛ рддреБрдореНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИ
1) рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
2) рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХрдм ?

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ: рдмреНрд▓реЗрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмреНрд▓реЗрдЬрд╝рд░ рдбреЗрд╕реНрдХрдЯреЙрдк/рд╣рд╛рдЗрдмреНрд░рд┐рдб рдРрдкред рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдФрд░ рд░рд╛рдЬреНрдп рдкреБрдирдГ рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реИ, рддреЛ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднрд░реЛрд╕реЗрдордВрдж рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рд╣реИрдВрдбрд▓ рди рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ, рдЙрдкрдпреБрдХреНрдд UX рджрд┐рдЦрд╛рдиреЗ рдФрд░ рдлрд┐рд░ рд╢рдЯ рдбрд╛рдЙрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рдирдХ рдбреЗрд╕реНрдХрдЯреЙрдк-рдРрдк рдкреИрдЯрд░реНрдиред

рдЕрд╕реНрдерд╛рдпреА рд╣реИрдХ: рд╣рдордиреЗ рд╕реЗрд░рд┐рд▓реЛрдЧ рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рд╣реИред рд╕реЗрд░рд┐рд▓реЛрдЧ рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рднреА рд▓реЙрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╣рдо рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рдЧреБрдг-рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ CircuitId рдХреБрдВрдЬреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╕рд░реНрдХрд┐рдЯ рдорд░ рдЧрдпрд╛ рд╣реИ - рдпрд╛рдиреА, рдПрдХ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реИред рд╣рдо рдЙрд╕ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдЬрд╛рдВрдЪ рдХреА рдереАред рдкреНрд░реЗрд╕реНрдЯреЛ - рдЖрдкрдХреЗ рд╣рд╛рде рд╕рдмрд╕реЗ рдКрдкрд░ рдЕрдирдЪрд╛рд╣реЗ рдЕрдкрд╡рд╛рдж рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ, рджреВрд╕рд░реЛрдВ рдХреА рддрд░рд╣, рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ .NET 5 рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВред
рдкреБрд░рд╛рдиреЗ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдмреНрд▓реЗрдЬрд╝рд░ рдкрд░ рдПрдХ рд╕рд╛рд▓ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдордИ/рдЬреВрди рдореЗрдВ рдореЗрд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬрдм webasssembly рдЙрддреНрдкрд╛рджрди рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛)ред

рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рдордЬрдмреВрдд рддрд░реАрдХреЗ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдХреГрдкрдпрд╛ 5.0 рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╣рдо рд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...)

рдЖрдкрдХреЛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рд╣реИрд▓реЛ, рдореИрдВ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реВрдВ @julienGrd
рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛/рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░реЗрдВред
рд╕рд╛рджрд░!

рд╡рд╣реА рдореЗрд░реЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реИред

рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЗрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ
рд╡рд┐рд░рд╛рд╕рдд ASP.Net рд╡реЗрдм рдкреЗрдЬред

рдордВрдЧрд▓рд╡рд╛рд░, 3 рдорд╛рд░реНрдЪ, 2020 рдХреЛ рджреЛрдкрд╣рд░ 12:02 рдмрдЬреЗ eliudgerardo [email protected]
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣реИрд▓реЛ, рдореИрдВ рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реВрдВ @julienGrd
https://github.com/julienGrd
рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛/рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░реЗрдВред
рд╕рд╛рджрд░!

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/aspnetcore/issues/13452?email_source=notifications&email_token=ANKYSDFSUQ3OTBGWQMRV5EDRFUZ27A5CNFSM4IPQWA62YY3PNVWWWK3TUL52HS4DFVREXGEN43VMVBW63#PJ5J59Z40TOR
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ANKYSDGFCDRMZV2N4NLMOMLRFUZ27ANCNFSM4IPQWA6Q
.

--
рдЕрдВрдХрд┐рдд рдмрдВрд╕рд╛

*рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЦреЗрд▓*

рдЗрд░рд╛рджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ https://github.com/dotnet/aspnetcore/issues/19533 рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдкреВрд░рд╛ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗред

рдЖрдкрдХреЛ ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рди рдЖрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@SteveSandersonMS рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХреЗ рдмрд╛рдж рдПрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдмреЗрдЬреЛрдбрд╝ рдЕрдкрд╡рд╛рдж рд╕реМрдВрдкрддрд╛ рд╣реИ _рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рд░реЗрдЧреБрди рдЬреИрд╕реА рдЕрдкрд╡рд╛рдж-рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдкрд╡рд╛рдж, рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдпреВрдЖрдИ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдмрд┐рдирд╛, рд╣рдореЗрдВ рдЗрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдЬреАрдм рд╣реИред ILogger рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп API рдХреНрдпреЛрдВ рдкреНрд░рджрд╛рди рди рдХрд░реЗрдВ?

рдЗрд░рд╛рджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк ILogger рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЕрдирдХреИрдкреНрдб рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╕реНрдЯрдо рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд░рддрд╛ рд╣реИред

@SteveSandersonMS рдХрд┐рд╕реА рднреА рдореМрдХреЗ рд╕реЗ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдРрдк рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг рд╣реИ? рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдПрдХ рдмреЗрдЬреЛрдбрд╝ рдЕрдкрд╡рд╛рдж рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдЕрдиреБрдХреВрд▓ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдВред рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рд╕рд╛рджрд░ред

@eliudgerardo Blazor рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ UI рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЕрдирд╣реЗрд▓реНрдб рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рдЖрдк рдЗрд╕ UI рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ https://docs.microsoft.com/en-us/aspnet/core/blazor/handle-errors?view=aspnetcore-3.1#detailed -errors-during-development рдкрд░ рд╣реИрдВ

@SteveSandersonMS рдореИрдВ рдЙрд╕ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдЕрд╡рдЧрдд рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕рд░реНрдХрд┐рдЯ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЛ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

@eliudgerardo рдпрд╣ рдХреНрдпреЛрдВ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрдХрд┐рдЯ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд┐рдирд╛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рднреА рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрдиреЗ рджреЗрдирд╛ рд╣реИ?

@SteveSandersonMS рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╕рд░реНрдХрд┐рдЯ рдЯреВрдЯ рдЬрд╛рдП! рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдРрдк рдореЗрдВ рдпрд╛ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рддреЛ рд╣рдо рдПрдХ рдРрд╕рд╛ рд╕реНрдерд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬрд┐рд╕рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реЛ "рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ {рдЕрдкрд╡рд╛рджред рд╕рдВрджреЗрд╢}" рдФрд░ рдРрдк рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╣рдорд╛рд░реЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдмреЛрдЭрд┐рд▓ рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ ...

@рдкрд╛рд░реНрдЯреАрд▓рд╛рдЗрдЯ рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕рд░реНрдХрд┐рдЯ рдЕрдм рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рд╣рдо рдЕрдм рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХрд╛ рд╕реБрд░рдХреНрд╖рд╛ рддрд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдХреБрдЫ рдФрд░ред рдпрджрд┐ рд╕рд░реНрдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рд╕рд╣рд┐рдд рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣рдо рдЬрд┐рд╕ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ "рдкреНрд░рддрд┐ рдШрдЯрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдЕрдкрд╡рд╛рдж" рддрдВрддреНрд░ рд╣реИред рдпрджрд┐ рдпрд╣ рддрдВрддреНрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдврд╛рдВрдЪрд╛ рдШрдЯрдХ рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ, рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рддрд░реНрдХ рдореЗрдВ рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ try/catch рддрд░реНрдХ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдврд╛рдВрдЪреЗ рдиреЗ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХ рдореГрдд (рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рдпреВрдЖрдИ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА "рддреНрд░реБрдЯрд┐" рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛?

рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдШрдЯрдХ рд╕реАрдорд╛ рд░рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред

рдпрд╣ рдмреЗрд╣рддрд░реАрди рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реБрдЖ рд╣реИ) рдЬрд┐рд╕реЗ рд╣рдо рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдЕрдкрд╡рд╛рдж рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд╡рд╛рдж рд╡рд┐рд╡рд░рдг рднреЗрдЬреЗрдВ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдбреАрдмреА рдпрд╛ рдХреБрдЫ ..
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ ILogger рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдм рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╕реЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реИред

рдкреНрд░рддрд┐-рдШрдЯрдХ рдЕрдирдЪрд╛рд╣реЗ-рдЕрдкрд╡рд╛рдж рдЬрд╛рд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реЛрдВрдЧреЗред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдФрд░/рдпрд╛ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдо ui рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рддреНрд░реБрдЯрд┐ рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░ рд╕рдХреЗрдВред рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ:

<MyApp>
    <HandleErrors>
        <ThirdPartyComponent />
    </HandleErrors>
    <HandleErrors>
        <SomeOtherComponent />
    </HandleErrors>
</MyApp>

рдпрджрд┐ рдХреЛрдИ рднреА рдШрдЯрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдПрдХ рд░рд┐рдЪ-рдбреЗрдЯрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдХреБрдЫ рд╕рд╛рдЗрдбрдмрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрдк рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлреЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред

рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдЬреИрд╕реЗ рдХреБрдЫ рдореЗрдВ, рд╕рдЦреНрдд рджреГрд╢реНрдп/рдореЙрдбрд▓ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдЪрд┐рдВрддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ; рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдПрдорд╡реАрд╡реАрдПрдо рдпрд╛ рдПрдорд╡реАрд╕реА рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЙрд╕ рддрд░реНрдХ рдХреЗ рдЖрд╕рдкрд╛рд╕ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЬреЛ рджреГрд╢реНрдп рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмреНрд▓реЗрдЬрд╝рд░ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рдЙрдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдирд┐рд╡рд╛рд░реНрдп рдФрд░ рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реИрдВред рдПрдХ .xaml рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреАрдЪреЗ рд▓рд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди .razor рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╣реИрдВрдбрд▓ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛрдирд╛ рдорд╛рдореВрд▓реА рд╣реИ, рдЪрд╛рд╣реЗ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ ORM-рд╕рдорд░реНрдерд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛

<strong i="7">@if</strong> (mightBeNull.Value) {
    <br>
}

рдХреНрдпрд╛ ILogger рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ?

@julienGrd рдХреА рддрд░рд╣ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ MsalUiRequiredException рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреЛрдк рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдЗрдирдЗрди рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХреВрдВред рдПрдорд╡реАрд╕реА рдореЗрдВ рдПрдХ рдПрдХреНрд╢рди рдЕрдкрд╡рд╛рдж рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред

рд╢рд╛рдпрдж ILogger рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдмреБрд░рд╛ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░рд╛ рдЕрдкрд╡рд╛рдж рдПрдХ рд▓реЗрдЦ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдХреНрд░реЙрд╕-рдХрдЯрд┐рдВрдЧ рдЪрд┐рдВрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдореЗрд░реЗ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рди рдХрд░реЗред

@kenchilada рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рд╡реИрд╢реНрд╡рд┐рдХ" рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрдм рднреА рдЖрдк рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЯреНрд░реИрдХ рдЦреЛ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпреВрдПрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрд╕ рд╕рдордп рдЬреЛ рдХреБрдЫ рднреА рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдЙрд╕реЗ рдлреЗрдВрдХ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдпреВрдЖрдИ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдпрд╛рд╕/рдкрдХрдбрд╝ рдбрд╛рд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рд╕рднреА рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХреЗрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ "рд╡реИрд╢реНрд╡рд┐рдХ" рд╕реНрддрд░ рдкрд░ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рд╛рдБ, ILogger рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ RenderTreeBuilder рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдЗ-рдХреИрдЪ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рддреБрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реЛ

<strong i="6">@try</strong>
{
    <p>@{throw new Exception();}</p>
}
catch (Exception e)
{
    <p>An error occurred.</p>
}

..рд▓реЗрдХрд┐рди рдпрд╣ "рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ" рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдпрд╣ рдкреВрд░реЗ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдиреАрдЪреЗ рд▓рд╛рдПрдЧрд╛ред рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рд▓реЙрдЧ рдФрд░ #blazor-error-ui рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

@SteveSandersonMS Im рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рд╕рд┐рджреНрдзрд╛рдВрдд" рдореЗрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реВрдБ рдЬрд╣рд╛рдБ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЙрддреНрддрд░ рд╣реЛрдВрдЧреЗред

рдореИрдВ рдореМрдЬреВрджрд╛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдРрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдмреНрд▓реЗрдЬрд╝рд░ рдореЗрдВ рддрдХрдиреАрдХреА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рджреЛ рдРрдкреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдЧрддрддрд╛ рдФрд░ рд╕рд╛рдЭрд╛ рдХреЛрдб рд░рдЦрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ рдФрд░ рджреЛ рдРрдкреНрд╕ рдХреЛ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рджреМрд░рд╛рди рдХрдВрдзреЗ рд╕реЗ рдХрдВрдзрд╛ рдорд┐рд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред .

рддреЛ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХреЙрд▓ рдкрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╡реНрдпреВрдореЛрдбреЗрд▓ рд╣реИ рдЗрд╕ рддрд░рд╣ рдХреА рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рд╕реЗрд╡рд╛рдПрдВ:
````
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп MyFunction () {
wcfClient.MyFunctionCompleted += MyFunctionCompleted;
wcfClient.MyFunction ();
}

рдирд┐рдЬреА рд╢реВрдиреНрдп MyFunctionCompleted(рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЗрд╖рдХ, MyFunctionCompletedArgs args){
// рдкрд░рд┐рдгрд╛рдо рдпрд╣рд╛рдБ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрд╡рд╛рдж рднреА
// рд╣рдореЗрдВ рдЗрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ
}
````

рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдмреНрд▓реЗрдЬрд╝рд░ рд╡реНрдпреВ рдореЗрдВ рдЕрдкрдиреЗ рд╡реНрдпреВ рдореЙрдбрд▓ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реИ
private void ButtonClick(){ try{ myViewModel.MyFunction(); } catch(Exception ex){ //i can't catch the exception in the service or happened in the callback } }

рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕реЗрд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд╡рд╛рдж рд╡рд╛рдкрд╕реА рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рдпрд╛ рдЕрдкрд╡рд╛рдж рд╕реАрдзреЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╣реБрдЖ, рдореИрдВрдиреЗ рд╣рд╛рде рдЦреЛ рджрд┐рдпрд╛ред

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж !

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрдп рдкреВрд░реНрдгрддрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ MyFunctionCompletedArgs рдореЗрдВ рдпрд╛ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ рдпрд╛ TResult рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рд╣реИ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

public Task MyFunction() 
{
    var tcs = new TaskCompletionSource<TResult>();
    wcfClient.MyFunctionCompleted += MyFunctionCompleted(tcs);
    wcfClient.MyFunction();
    return tcs.Task;
}

private EventHandler<TResult> MyFunctionCompleted(TaskCompletionSource<TResult> tcs) => (object sender, MyFunctionCompletedArgs args) =>
{
    if (args.Error != null)
    {
        tcs.SetException(args.Error);
    }
    else
    {
        tcs.SetResult(args.ReturnValue);
    }
};

рдлрд┐рд░ рдмреНрд▓реЗрдЬрд╝рд░ рдХреА рдУрд░, рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ:

private async Task ButtonClick()
{
    try
    {
        await myViewModel.MyFunction();
    }
    catch (Exception ex)
    {
    }
}

рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ/рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред

рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдореЗрд░рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ (рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╣рдо "рдмрдбрд╝реЗ" рдРрдкреНрд╕ рдпрд╛ рдПрд▓рдУрдмреА рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ/рдкрдХрдбрд╝реЗрдВред

рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рд╕реЗ "рдЫреЛрдЯрд╛" рдРрдкреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ)

рд▓реЗрдХрд┐рди рдПрдХ рдЯреАрдо рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ 10-20 (рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ) рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд▓реЗ LOB рдРрдкреНрд╕ рдЙрд╕ рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ рдЗрд╕ рд╕рдордп рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ POC рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рдЧрднрдЧ 10-15 рдорд┐рдирдЯ рдмрд╛рдж рд╕рд╛рдордиреЗ рдЖрдИред

рдирдорд╕реНрддреЗ,

рд╕рд╣реА рдХрд╣рд╛ .рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЗрд╕ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдПрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рд░ рдЬрдЧрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬрдм рд╕рд░реНрдХрд┐рдЯ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рдХрд┐ рдХрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реИред рд╣рдо Blazor рдХреЗ рд╢реБрд░реБрдЖрддреА рдЕрдВрдЧреАрдХрд╛рд░ рд╣реИрдВ рдФрд░ рдореЗрд░реА рдХрдВрдкрдиреА рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдереЗред

рдмреНрд▓реЗрдЬрд╝рд░ рдореЗрдВ рдмрд╣реБрдд рд╕реА рдРрд╕реА рдЪреАрдЬрд╝реЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЙрд▓рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж рдПрд╡рдВ рд╕рд╛рджрд░,

рдЕрдВрдХрд┐рдд рдмрдВрд╕рд╛

рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЦреЗрд▓

рд╕реЗ: рд╣реИрдЧреЗ рдЧреЛрд╢реЗрди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рднреЗрдЬрд╛ рдЧрдпрд╛: рдордВрдЧрд▓рд╡рд╛рд░, 26 рдордИ, 2020 12:21 рдкреВрд░реНрд╡рд╛рд╣реНрди
рдкреНрд░рддрд┐: dotnet/aspnetcore [email protected]
рд╕реАрд╕реА: Bansalankit2601 [email protected] ; рдЯрд┐рдкреНрдкрдгреА рдЯрд┐рдкреНрдкрдгреА @noreply.github.com
рд╡рд┐рд╖рдп: рдкреБрди: [рдбреЙрдЯрдиреЗрдЯ/рдПрд╕реНрдкрдиреЗрдЯрдХреЛрд░] [рдмреНрд▓реЗрдЬрд╝рд░] рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рдмрдВрдзрди (#13452)

рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ/рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред

рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдореЗрд░рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ (рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╣рдо "рдмрдбрд╝реЗ" рдРрдкреНрд╕ рдпрд╛ рдПрд▓рдУрдмреА рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ/рдкрдХрдбрд╝реЗрдВред

рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рд╕реЗ "рдЫреЛрдЯрд╛" рдРрдкреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ)

рд▓реЗрдХрд┐рди рдПрдХ рдЯреАрдо рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ 10-20 (рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ) рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд▓реЗ LOB рдРрдкреНрд╕ рдЙрд╕ рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ рдЗрд╕ рд╕рдордп рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ POC рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рдЧрднрдЧ 10-15 рдорд┐рдирдЯ рдмрд╛рдж рд╕рд╛рдордиреЗ рдЖрдИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/dotnet/aspnetcore/issues/13452#issuecomment-633799650 рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ https://github.com/notifications/unsubscribe-auth/ANKYSDATEUMBPN43PYQU2ZDRTM7T3ANCNFSM4IPQWA6Q рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВред https://github.com/notifications/beacon/ANKYSDD3JBBDUMUWMZ5NQXDRTM7T3A5CNFSM4IPQWA62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEXDQHYQ.gif

рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ/рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред

рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдореЗрд░рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ (рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рд╣рдо "рдмрдбрд╝реЗ" рдРрдкреНрд╕ рдпрд╛ рдПрд▓рдУрдмреА рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ/рдкрдХрдбрд╝реЗрдВред

рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рд╕реЗ "рдЫреЛрдЯрд╛" рдРрдкреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ)

рд▓реЗрдХрд┐рди рдПрдХ рдЯреАрдо рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ 10-20 (рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ) рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд▓реЗ LOB рдРрдкреНрд╕ рдЙрд╕ рддрд░рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ рдЗрд╕ рд╕рдордп рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ POC рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рдЧрднрдЧ 10-15 рдорд┐рдирдЯ рдмрд╛рдж рд╕рд╛рдордиреЗ рдЖрдИред

рд╣рдо рднреА рдпрд╣реАрдВ рдЙрддрд░реЗ рдереЗред рд╣рдо рдЗрд╕реЗ рдмреИрдХрдПрдВрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ-рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдиреНрдпрд╛рд╕ рд╣реИред

@рдЧреБрд▓рдмрдирд╛рдирд╛ рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдРрдк рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рд╣реЛрдЧреА (рднрд▓реЗ рд╣реА рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдХрд░реВрдВ)

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрдп рдкреВрд░реНрдгрддрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ MyFunctionCompletedArgs рдореЗрдВ рдпрд╛ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ рдпрд╛ TResult рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рд╣реИ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

public Task MyFunction() 
{
    var tcs = new TaskCompletionSource<TResult>();
    wcfClient.MyFunctionCompleted += MyFunctionCompleted(tcs);
    wcfClient.MyFunction();
    return tcs.Task;
}

private EventHandler<TResult> MyFunctionCompleted(TaskCompletionSource<TResult> tcs) => (object sender, MyFunctionCompletedArgs args) =>
{
    if (args.Error != null)
    {
        tcs.SetException(args.Error);
    }
    else
    {
        tcs.SetResult(args.ReturnValue);
    }
};

рдлрд┐рд░ рдмреНрд▓реЗрдЬрд╝рд░ рдХреА рдУрд░, рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ:

private async Task ButtonClick()
{
    try
    {
        await myViewModel.MyFunction();
    }
    catch (Exception ex)
    {
    }
}

рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реИ... рдпрджрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣рд╛рдБ рдХреЛрдИ рдЙрддреНрдкрд╛рдж рдХреНрдпреЛрдВ рд╣реИ
рдмреНрд▓реЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ "рд╕рднреА рди рдЖрдП рдЕрдкрд╡рд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ" ?:
https://docs.elmah.io/logging-to-elmah-io-from-blazor/

@ rono1 рдЕрдм рдЖрдк рд▓реЙрдЧрд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрд╡рд╛рдж рд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрд╡рд╛рдж рдХреЛ "рд╣реИрдВрдбрд▓" рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╕ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд╣реВрдБ, рдпрджреНрдпрдкрд┐!

рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмреИрдХрд▓реЙрдЧ рдорд╛рдЗрд▓рд╕реНрдЯреЛрди рддрдХ рд▓реЗ рдЬрд╛рдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдо рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдмреИрдХрд▓реЙрдЧ рдХрд╛ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕ рд╕рдордп рдЗрд╕ рдордж рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдЕрдкреЗрдХреНрд╖рд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╣рдорд╛рд░реА рдЯреНрд░рд╛рдЗрдПрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╣рдо рдЬрд┐рд╕ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ "рдкреНрд░рддрд┐ рдШрдЯрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдЕрдкрд╡рд╛рдж" рддрдВрддреНрд░ рд╣реИред рдпрджрд┐ рдпрд╣ рддрдВрддреНрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдврд╛рдВрдЪрд╛ рдШрдЯрдХ рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ, рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рддрд░реНрдХ рдореЗрдВ рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ try/catch рддрд░реНрдХ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдврд╛рдВрдЪреЗ рдиреЗ рдЙрд╕ рд╕реНрддрд░ рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХ рдореГрдд (рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рдпреВрдЖрдИ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА "рддреНрд░реБрдЯрд┐" рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛?

@SteveSandersonMS рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдкрд░ +1ред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ try/catch рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореИрдВ рд░рд╛рдЬреНрдп рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрдзрд╛рд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рджрд░реНрджрдирд╛рдХ рд╣реИред

рдЗрд╕ рдкрд░ рднреА +1ред рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рд▓реЙрдЧрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдРрдк рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛:
https://github.com/markusrt/NRZMyk/blob/master/NRZMyk.Client/ReloadOncriticalErrorLogProvider.cs

рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рддрдХ рдХреЛрдИ рдХреНрд▓реАрдирд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ

Blazor рдЯреАрдо рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдЕрдиреБрд░реЛрдз / рдореБрджреНрджрд╛ред

рд░рд╡рд┐рд╡рд╛рд░, 4 рдЕрдХреНрдЯреВрдмрд░ 2020 рдХреЛ 15:24 рдмрдЬреЗ, рдорд╛рд░реНрдХрд╕ рд░реЗрдирд╣рд╛рд░реНрдбреНрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

>
>
>

рдореИрдВрдиреЗ рдХрд╕реНрдЯрдо рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдмреНрд▓реЗрдЬрд╝рд░ рдРрдк рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ
рдкреНрд░рджрд╛рддрд╛:

https://github.com/markusrt/NRZMyk/blob/master/NRZMyk.Client/ReloadOncriticalErrorLogProvider.cs

рд▓реЙрдЧрд░ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди I
рдЕрднреА рддрдХ рдХреЛрдИ рдХреНрд▓реАрдирд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рдорд┐рд▓рд╛

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/dotnet/aspnetcore/issues/13452#issuecomment-703255415 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AEVARXEEHAOU532C26QCGXLSJBZRRANCNFSM4IPQWA6Q
.

рд╣рдореЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди/рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ Next sprint planning рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдкрд░ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рд╣рдо рдЕрдЧрд▓реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рд╣рдо рдЕрдиреБрд░реЛрдз рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╣рдорд╛рд░реА рдЯреНрд░рд╛рдЗрдПрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА:

function reportError(error) {
  if (DotNet) {
    DotNet.invokeMethodAsync('MyApp.Client', 'NotifyError', error);
  }
}

var exLog = console.error;
console.error = function (msg) {
  exLog.apply(console, arguments);
  reportError(msg);
}

window.addEventListener("unhandledrejection", function (promiseRejectionEvent) {
  reportError(promiseRejectionEvent.reason.message);
});
  public partial class AppLayout
  {
    [JSInvokable("NotifyError")]
    public static void NotifyError(string error)
    {
      //Handle errors
    }
  }

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди

рдпрд╣ рдПрдХ рдЙрддреНрдкрд╛рджрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдПрдХ рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдЕрдирд╣реЗрд▓реНрдб рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд░реНрдерди рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдВрддрд░ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рддрдХрдиреАрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдкрдХреНрд╡ рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдПрдЧреАред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

TanvirArjel picture TanvirArjel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bgribaudo picture bgribaudo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

farhadibehnam picture farhadibehnam  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Pixel-Lord picture Pixel-Lord  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ipinak picture ipinak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ