dotnet-presentations / blazor-workshop

Blazor workshop
https://aka.ms/blazorworkshop
MIT License
3.49k stars 1.55k forks source link

05- Checkout Without Validation - Server Side Validation throws error #360

Open jeremyZX opened 1 year ago

jeremyZX commented 1 year ago

I'm following the guides in sequence, and I think I've discovered an issue somewhere.

When following the guides in sequence, 05-checkout-with-validation.md's Adding server-side validation section says I should be able to recompile and submit an order with a blank delivery address, and receive a 400 error. I'm receiving a 500 error: System.NotSupportedException: Metadata for type 'Microsoft.AspNetCore.Mvc.ValidationProblemDetails' was not provided by TypeInfoResolver of type 'BlazingPizza.OrderContext'. If using source generation, ensure that all root types passed to the serializer have been indicated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically..

The full 500 error is below.

I can repro this by opening up the 05-checkout-with-validation checkpoint, and deleting the client-side validation components from AddressEditor.razor and Checkout.razor and submitting a blank form.

I'm running this in Visual Studio 2022 17.5.1.

System.NotSupportedException: Metadata for type 'Microsoft.AspNetCore.Mvc.ValidationProblemDetails' was not provided by TypeInfoResolver of type 'BlazingPizza.OrderContext'. If using source generation, ensure that all root types passed to the serializer have been indicated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically.
   at System.Text.Json.ThrowHelper.ThrowNotSupportedException_NoMetadataForType(Type type, IJsonTypeInfoResolver resolver)
   at System.Text.Json.JsonSerializerOptions.GetTypeInfoInternal(Type type, Boolean ensureConfigured, Boolean resolveIfMutable)
   at System.Text.Json.JsonSerializer.GetTypeInfo(JsonSerializerOptions options, Type inputType)
   at System.Text.Json.JsonSerializer.SerializeAsync(Stream utf8Json, Object value, Type inputType, JsonSerializerOptions options, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Duende.IdentityServer.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events, IIssuerNameService issuerNameService, IBackChannelLogoutService backChannelLogoutService) in /_/src/IdentityServer/Hosting/IdentityServerMiddleware.cs:line 102
   at Duende.IdentityServer.Hosting.MutualTlsEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes) in /_/src/IdentityServer/Hosting/MutualTlsEndpointMiddleware.cs:line 94
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Duende.IdentityServer.Hosting.DynamicProviders.DynamicSchemeAuthenticationMiddleware.Invoke(HttpContext context) in /_/src/IdentityServer/Hosting/DynamicProviders/DynamicSchemes/DynamicSchemeAuthenticationMiddleware.cs:line 47
   at Duende.IdentityServer.Hosting.BaseUrlMiddleware.Invoke(HttpContext context) in /_/src/IdentityServer/Hosting/BaseUrlMiddleware.cs:line 27
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)

HEADERS
=======
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Length: 407
Content-Type: application/json; charset=utf-8
Host: localhost:44381
Referer: https://localhost:44381/checkout
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"
sec-ch-ua-platform: "Windows"
sec-ch-ua-mobile: ?0
origin: https://localhost:44381
sec-fetch-site: same-origin
sec-fetch-mode: cors
sec-fetch-dest: empty
  Microsoft Visual Studio Community 2022
  Version 17.5.1
  VisualStudio.17.Release/17.5.1+33424.131
  Microsoft .NET Framework
  Version 4.8.04084

  Installed Version: Community

  Visual C++ 2022   00482-90000-00000-AA838
  Microsoft Visual C++ 2022

  ADL Tools Service Provider   1.0
  This package contains services used by Data Lake tools

  ASA Service Provider   1.0

  ASP.NET and Web Tools   17.5.317.37931
  ASP.NET and Web Tools

  Azure App Service Tools v3.0.0   17.5.317.37931
  Azure App Service Tools v3.0.0

  Azure Data Lake Tools for Visual Studio   2.6.5000.0
  Microsoft Azure Data Lake Tools for Visual Studio

  Azure Functions and Web Jobs Tools   17.5.317.37931
  Azure Functions and Web Jobs Tools

  Azure Stream Analytics Tools for Visual Studio   2.6.5000.0
  Microsoft Azure Stream Analytics Tools for Visual Studio

  C# Tools   4.5.0-6.23123.11+271ccd71554f7d28d2f90551aafd0bdeb5d327aa
  C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

  Common Azure Tools   1.10
  Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.

  Cookiecutter   17.0.22336.2
  Provides tools for finding, instantiating and customizing templates in cookiecutter format.

  Microsoft Azure Hive Query Language Service   2.6.5000.0
  Language service for Hive query

  Microsoft Azure Stream Analytics Language Service   2.6.5000.0
  Language service for Azure Stream Analytics

  Microsoft Azure Tools for Visual Studio   2.9
  Support for Azure Cloud Services projects

  Microsoft JVM Debugger   1.0
  Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines

  Node.js Tools   1.5.50105.3 Commit Hash:882de61a7c99ae988d4c62029301292a3e0b1d56
  Adds support for developing and debugging Node.js apps in Visual Studio

  NuGet Package Manager   6.5.0
  NuGet Package Manager in Visual Studio. For more information about NuGet, visit https://docs.nuget.org/

  Python - Django support   17.0.22336.2
  Provides templates and integration for the Django web framework.

  Python - Profiling support   17.0.22336.2
  Profiling support for Python projects.

  Python with Pylance   17.0.22336.2
  Provides IntelliSense, projects, templates, debugging, interactive windows, and other support for Python developers.

  Razor (ASP.NET Core)   17.5.2.2307502+8b3141d86b738daf2ca3ed9c15b12513071fc676
  Provides languages services for ASP.NET Core Razor.

  SQL Server Data Tools   17.2.40118.0
  Microsoft SQL Server Data Tools

  ToolWindowHostedEditor   1.0
  Hosting json editor into a tool window

  TypeScript Tools   17.0.20105.2003
  TypeScript Tools for Microsoft Visual Studio

  Visual Basic Tools   4.5.0-6.23123.11+271ccd71554f7d28d2f90551aafd0bdeb5d327aa
  Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.

  Visual F# Tools   17.5.0-beta.23053.5+794b7c259d9646a7eb685dad865aa27da7940a21
  Microsoft Visual F# Tools

  Visual Studio IntelliCode   2.2
  AI-assisted development for Visual Studio.

  ZenCoding   1.2.20
  Provides ZenCoding for the HTML Editor - full support for static HTML, Razor and WebForms.
nerem commented 1 year ago

Had the same issue and the same fix as in https://github.com/dotnet-presentations/blazor-workshop/issues/358 solved it for me.

wolfinator commented 1 year ago

358 fix does nothing for me and I have the same error as @jeremyZX