Я строю простой API с ядром ASP.NET, и у меня возникает проблема, когда все мои маршруты возвращают ошибку 404. Мой Condertroller правильно определяется с помощью соответствующих глаголов HTTP (get, post, plot, delete) и маршрутов, но запросы на API не попадают в действия контроллера, как и ожидалось. < /P>
вот мой Код OrderController: < /p>
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using System.Collections.Generic;
using System.Threading.Tasks;
using TmbApplication.Models;
using TmbApplication.Services;
namespace TmbApplication.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class OrderController(IOrderService orderService) : ControllerBase
{
private readonly IOrderService _orderService = orderService;
[HttpGet]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(200, Type = typeof(IEnumerable))]
[ProducesResponseType(500)]
public async Task GetOrders()
{
var orders = await _orderService.GetAllOrdersAsync();
return Ok(orders);
}
[HttpGet("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(200, Type = typeof(Order))]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task GetOrder(Guid id)
{
var order = await _orderService.GetOrderByIdAsync(id);
if (order == null)
{
return NotFound();
}
return Ok(order);
}
[HttpPost]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(201, Type = typeof(Order))]
[ProducesResponseType(400)]
[ProducesResponseType(500)]
public async Task CreateOrder([FromBody] Order order)
{
if (order == null)
{
return BadRequest("Invalid data.");
}
var createdOrder = await _orderService.CreateOrderAsync(order);
return CreatedAtAction(nameof(GetOrder), new { id = createdOrder.Id }, createdOrder);
}
[HttpPut("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(204)]
[ProducesResponseType(400)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task UpdateOrder(Guid id, [FromBody] Order order)
{
if (id != order.Id)
{
return BadRequest("Order ID mismatch.");
}
var existingOrder = await _orderService.GetOrderByIdAsync(id);
if (existingOrder == null)
{
return NotFound();
}
await _orderService.UpdateOrderAsync(order);
return NoContent();
}
[HttpDelete("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(204)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task DeleteOrder(Guid id)
{
var order = await _orderService.GetOrderByIdAsync(id);
if (order == null)
{
return NotFound();
}
await _orderService.DeleteOrderAsync(id);
return NoContent();
}
}
}
< /code>
и вот программа .cs: < /p>
using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using TmbApplication.Models;
using TmbApplication.Services;
using Microsoft.Extensions.DependencyInjection;
using TmbApplication.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
builder.Services.AddDbContext(options =>
options.UseNpgsql("DbConnection"));
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Exemplo", Version = "v1" });
});
builder.Services.AddScoped();
builder.Services.AddControllers();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Exemplo v1");
});
}
app.UseCors("AllowAll");
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
< /code>
Вещи, которые я уже проверил:
MapControllers () присутствует в программе. ] ")] в контроллере).
контроллер правильно зарегистрирован, а AddControllers () включен в программу. Являются ли журналы из Docker, показывающие проблему: < /p>
2025-02-11 07:33:42 Информация: microsoft.aspnetcore.hosting.diagnostics [1] < Br/> 2025-02-11 07:33:42 Запуск Запуска http/1.1 get
http: // localhost: 3000/api/order/-application/json 155 2025-02-11
07 : 33: 42 Информация: microsoft.aspnetcore.hosting.diagnostics [2] 2025-02-11
07:33:42 Запрос http/1.1 get
http: // localhost: 3000/api/ Заказ /-404 0-8.9322MS 2025-02-11
07:33:42 Информация: microsoft.aspnetcore.hosting.diagnostics [16] 2025-02-11
07:33:42. Конец промежуточного трубопровода
без обработки кода приложения. Путь запроса: get
http: // localhost: 3000/api/order/, код состояния ответа: 404 2025-02-11
07:33:47 Информация: microsoft.aspnetcore.hosting.diagnostics [ 1] 2025-02-11
07:33:47 Запуск запуска http/1.1 get
http: // localhost: 3000/swagger-Application/json 155 2025-02-11
07 : 33: 47 Информация: microsoft.aspnetcore.hosting.diagnostics [2] 2025-02-11
07:33:47 Запрос. 404 0-0,4094ms 2025-02-11 07:33:47
Информация: Microsoft.aspnetcore.hosting.diagnostics [16] 2025-02-11 07:33:47
запрос достиг конца промежуточный трубопровод, не будучи
, обрабатываемый кодом приложения. ПАТИТЕЛЬНОСТЬ: GET
http: // localhost: 3000/swagger, код состояния ответа: 404
Что может привести к возврату всех маршрутов. 404 ошибки? Любая помощь будет очень оценена!
Подробнее здесь: https://stackoverflow.com/questions/794 ... t-core-api
Почему все маршруты возвращают 404 в моем API ASP.NET Core API? ⇐ C#
Место общения программистов C#
-
Anonymous
1739280605
Anonymous
Я строю простой API с ядром ASP.NET, и у меня возникает проблема, когда все мои маршруты возвращают ошибку 404. Мой Condertroller правильно определяется с помощью соответствующих глаголов HTTP (get, post, plot, delete) и маршрутов, но запросы на API не попадают в действия контроллера, как и ожидалось. < /P>
вот мой Код OrderController: < /p>
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using System.Collections.Generic;
using System.Threading.Tasks;
using TmbApplication.Models;
using TmbApplication.Services;
namespace TmbApplication.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class OrderController(IOrderService orderService) : ControllerBase
{
private readonly IOrderService _orderService = orderService;
[HttpGet]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(200, Type = typeof(IEnumerable))]
[ProducesResponseType(500)]
public async Task GetOrders()
{
var orders = await _orderService.GetAllOrdersAsync();
return Ok(orders);
}
[HttpGet("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(200, Type = typeof(Order))]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task GetOrder(Guid id)
{
var order = await _orderService.GetOrderByIdAsync(id);
if (order == null)
{
return NotFound();
}
return Ok(order);
}
[HttpPost]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(201, Type = typeof(Order))]
[ProducesResponseType(400)]
[ProducesResponseType(500)]
public async Task CreateOrder([FromBody] Order order)
{
if (order == null)
{
return BadRequest("Invalid data.");
}
var createdOrder = await _orderService.CreateOrderAsync(order);
return CreatedAtAction(nameof(GetOrder), new { id = createdOrder.Id }, createdOrder);
}
[HttpPut("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(204)]
[ProducesResponseType(400)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task UpdateOrder(Guid id, [FromBody] Order order)
{
if (id != order.Id)
{
return BadRequest("Order ID mismatch.");
}
var existingOrder = await _orderService.GetOrderByIdAsync(id);
if (existingOrder == null)
{
return NotFound();
}
await _orderService.UpdateOrderAsync(order);
return NoContent();
}
[HttpDelete("{id}")]
[ApiExplorerSettings(GroupName = "v1")]
[ProducesResponseType(204)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public async Task DeleteOrder(Guid id)
{
var order = await _orderService.GetOrderByIdAsync(id);
if (order == null)
{
return NotFound();
}
await _orderService.DeleteOrderAsync(id);
return NoContent();
}
}
}
< /code>
и вот программа .cs: < /p>
using Microsoft.EntityFrameworkCore;
using Microsoft.OpenApi.Models;
using TmbApplication.Models;
using TmbApplication.Services;
using Microsoft.Extensions.DependencyInjection;
using TmbApplication.Data;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
builder.Services.AddDbContext(options =>
options.UseNpgsql("DbConnection"));
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Exemplo", Version = "v1" });
});
builder.Services.AddScoped();
builder.Services.AddControllers();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Exemplo v1");
});
}
app.UseCors("AllowAll");
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
< /code>
Вещи, которые я уже проверил:
MapControllers () присутствует в программе. ] ")] в контроллере).
контроллер правильно зарегистрирован, а AddControllers () включен в программу. Являются ли журналы из Docker, показывающие проблему: < /p>
2025-02-11 07:33:42 Информация: microsoft.aspnetcore.hosting.diagnostics [1] < Br/> 2025-02-11 07:33:42 Запуск Запуска http/1.1 get
http: // localhost: 3000/api/order/-application/json 155 2025-02-11
07 : 33: 42 Информация: microsoft.aspnetcore.hosting.diagnostics [2] 2025-02-11
07:33:42 Запрос http/1.1 get
http: // localhost: 3000/api/ Заказ /-404 0-8.9322MS 2025-02-11
07:33:42 Информация: microsoft.aspnetcore.hosting.diagnostics [16] 2025-02-11
07:33:42. Конец промежуточного трубопровода
без обработки кода приложения. Путь запроса: get
http: // localhost: 3000/api/order/, код состояния ответа: 404 2025-02-11
07:33:47 Информация: microsoft.aspnetcore.hosting.diagnostics [ 1] 2025-02-11
07:33:47 Запуск запуска http/1.1 get
http: // localhost: 3000/swagger-Application/json 155 2025-02-11
07 : 33: 47 Информация: microsoft.aspnetcore.hosting.diagnostics [2] 2025-02-11
07:33:47 Запрос. 404 0-0,4094ms 2025-02-11 07:33:47
Информация: Microsoft.aspnetcore.hosting.diagnostics [16] 2025-02-11 07:33:47
запрос достиг конца промежуточный трубопровод, не будучи
, обрабатываемый кодом приложения. ПАТИТЕЛЬНОСТЬ: GET
http: // localhost: 3000/swagger, код состояния ответа: 404
Что может привести к возврату всех маршрутов. 404 ошибки? Любая помощь будет очень оценена!
Подробнее здесь: [url]https://stackoverflow.com/questions/79429620/why-are-all-routes-returning-404-in-my-asp-net-core-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия