Есть такой контроллер:
[Area("api")]
[Route("[area]/[controller]")]
public class ProgramsController : Controller
{
[HttpGet("[action]")]
public async Task<IActionResult> Turn(int id, int state)
{
await Task.Delay(1000);
return Content("It works!");
}
}
Хочу, чтобы метод Turn
обрабатывал запросы вида:
http://localhost/api/programs/turn?id=1&state=2
Но при выполнении такого запроса параметры id
и state
не устанавливаются, хотя в Request.Query
значения попадают.
В чем проблема?
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute( "areas", "{area:exists}/{controller}/{action}");
routes.MapRoute("default", "{controller=Programms}/{Action=Index}");
});
}
Не воспроизводится:
https://localhost:12345/api/Programs/Turn?id=1&state=2
Единственное отличие (на мой взгляд) - у меня route прописан был когда-то давно так, как предлагал скафоллдинг:
app.UseMvc(routes =>
{
routes.MapRoute(
name : "areas",
template : "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Хотя возможно ещё разный тип проекта: я-то воткнул в первый попавшийся проект под рукой (тип: Web Application Asp.net MVC), а у вас поди чистый API проект?
Update. Нет, дело не в типе проекта и не в маршрутах. Создал новое приложение и поэкспериментировал с разными route - дело не в них. Где-то у вас биндинг нестандартный.
Сейчас посмотрю более тщательно. Видимо я что-то упустил.
Если зайдёте в тупик - попробуйте для начала создать новый пустой проект и в нём сделать area и такой простой контроллер, а потом уже сверять с основным проектом, чем они отличаются.
Проблема решилась.
Не обратил внимание, что стояла конфигурация релиза. И в следствии оптимизации компилятором незадействованные переменные не инициализировались.
Достаточно было переключится в Debug и все стало нормально :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, сделал элемент UserControl, который может иметь разные высоту и ширинуНеобходимо создать алгоритм который будет при добавлении...
Создал класс для валидации пользователяМетод ValidateAsync возвращает, что ошибок нет (Errors
Имеется один chart на форме, нужно начертить на нём несколько линии c ChartType = spline, таким образом что бы конец одного сплайна не соединялся с началом...