Cursos
Módulo
Implementación de operaciones HTTP en aplicaciones web Blazor de ASP.NET Core - Training
Implementación de operaciones HTTP en aplicaciones web Blazor de ASP.NET Core
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
ASP.NET Core ahora valida los métodos TryParse
y BindAsync
en los tipos de parámetro para los métodos Map*
. Si no se encuentra ningún método válido, ASP.NET Core busca métodos no válidos y genera una excepción en el inicio si encuentra uno. La excepción ayuda a evitar un comportamiento inesperado al alertar de que puede que la firma del método sea incorrecta.
ASP.NET Core 6.0 RC 2
En versiones anteriores de ASP.NET Core 6, si un método TryParse
o BindAsync
tenía una firma no válida, no se producía ninguna excepción y el marco intentaba enlazar JSON desde el cuerpo.
// Todo.TryParse is not in a valid format.
// Will try to bind from body as JSON instead.
app.MapPost("/endpoint", (Todo todo) => todo.Item);
public class Todo
{
public string Item { get; set; }
public static bool TryParse(string value) => true;
}
Si ASP.NET Core encuentra un método TryParse
o BindAsync
público que no coincide con la sintaxis esperada, se genera una excepción en el inicio. En el ejemplo anterior, se genera un error similar al siguiente:
TryParse method found on Todo with incorrect format. Must be a static method with format
bool TryParse(string, IFormatProvider, out Todo)
bool TryParse(string, out Todo)
but found
Boolean TryParse(System.String)
Este cambio puede afectar a la compatibilidad binaria y a la compatibilidad de orígenes.
Este cambio se ha realizado para que los desarrolladores tengan conocimiento de los métodos BindAsync
y TryParse
que tienen un formato no válido. Anteriormente, el marco suponía que el parámetro es JSON a partir del cuerpo. Dicha suposición puede dar como resultado un comportamiento inesperado.
Si el tipo tiene un método BindAsync
o TryParse
con una sintaxis diferente por un motivo distinto del enlace de parámetros, ahora encontrará una excepción en el inicio. Para evitar este comportamiento, hay varias estrategias disponibles:
BindAsync
o TryParse
para que sea internal
o private
.BindAsync
o TryParse
que tenga la sintaxis que busca el marco—los métodos no válidos se ignorarán si se encuentra uno válido.[FromBody]
.RequestDelegateFactory.Create()
IEndpointRouteBuilder.Map*()
, por ejemplo, app.MapGet()
y app.MapPost()
.Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Cursos
Módulo
Implementación de operaciones HTTP en aplicaciones web Blazor de ASP.NET Core - Training
Implementación de operaciones HTTP en aplicaciones web Blazor de ASP.NET Core
Documentación
Enlace de parámetros en aplicaciones de API mínimas
Obtenga información sobre cómo se rellenan los parámetros antes de invocar los controladores de ruta mínimos.
Enlace de modelos personalizado en ASP.NET Core
Obtenga información sobre cómo el enlace de modelos permite que las acciones de controlador funcionen directamente con tipos de modelos en ASP.NET Core.