Не передаются параметры в метод

187
02 апреля 2018, 21:02

Есть такой контроллер:

[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}");
    });
}  
Answer 1

Не воспроизводится:

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 и такой простой контроллер, а потом уже сверять с основным проектом, чем они отличаются.

Answer 2

Проблема решилась.

Не обратил внимание, что стояла конфигурация релиза. И в следствии оптимизации компилятором незадействованные переменные не инициализировались.

Достаточно было переключится в Debug и все стало нормально :)

READ ALSO
WPF: замостить контейнер элементами

WPF: замостить контейнер элементами

Здравствуйте, сделал элемент UserControl, который может иметь разные высоту и ширинуНеобходимо создать алгоритм который будет при добавлении...

225
ASP.NET Identity валидация пользователя

ASP.NET Identity валидация пользователя

Создал класс для валидации пользователяМетод ValidateAsync возвращает, что ошибок нет (Errors

132
VS C# chart несколько несвязанных линии c типом SeriesChartType.Spline

VS C# chart несколько несвязанных линии c типом SeriesChartType.Spline

Имеется один chart на форме, нужно начертить на нём несколько линии c ChartType = spline, таким образом что бы конец одного сплайна не соединялся с началом...

151