GOOGLE ADS

jueves, 14 de abril de 2022

Proyectos ASP.Net Core WebApi en VS 2022: 404 al cambiar el nombre del controlador

Rara vez me sumerjo en el desarrollo web y estaba usando el siguiente enlace para crear un pequeño proyecto: https://docs.microsoft.com/en-us/visualstudio/javascript/tutorial-asp-net-core-with-angular?view= vs-2022

Usando este proyecto, cambié el nombre del controlador y ahora, al cargar la página, la solicitud devuelve un 404. Si le devuelvo el nombre, la página se carga como se esperaba (en los tres componentes a continuación al cambiar el nombre de Productos a WeatherForecast). Los 3 lugares que renombré están a continuación. Esto todavía está usando datos ficticios a medida que aprendo angular.

¿Qué me estoy perdiendo al hacer un simple cambio de nombre aquí?

producto.componente.ts:

 export class ProductComponent implements OnInit {
public forecasts?: Products[];
constructor(http: HttpClient) {
http.get<Products[]>('/products').subscribe(result => {
this.forecasts = result;
}, error => console.error(error));
}

proxy.conf.js:

const PROXY_CONFIG = [
{
context: [
"/products",
],
target: "https://localhost:7050",
secure: false
}
]
module.exports = PROXY_CONFIG;

Products controller:

using Microsoft.AspNetCore.Mvc;
namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
public class ProductsController: ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<ProductsController> _logger;
public ProductsController(ILogger<ProductsController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetProducts")]
public IEnumerable<Products> Get()
{
return Enumerable.Range(1, 5).Select(index => new Products
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}

404:ingrese la descripción de la imagen aquí


Solución del problema

De acuerdo con su HttpErrorResponse, no está enviando una solicitud a la API de.NET, pero localhost:4200creo que es su aplicación Angular.

Intenta enviar una solicitud como esta:

http.get<Products[]>('https://localhost:7050/products').subscribe...

Si eso funciona, la configuración de su proxy está interfiriendo con la solicitud. Asegúrese de obtener el puerto correcto e iniciar la aplicación Angular después de que se haya iniciado la aplicación.NET. Puede verificar sus puertos en launchSettings.json, tenga cuidado porque http y https usan puertos diferentes. Úselo httpsi sus certificados no están configurados.

No te olvides de incluir proxy.conf.jsonen angular.jsondebajo "serve"de esta manera:

"architect": {
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "your-application-name:build",
"proxyConfig": "src/proxy.conf.json"
},

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...