ASP. NET базовая маршрутизация веб-API - PullRequest
0 голосов
/ 25 января 2020
  1. Маршрут с использованием «Использовать Mvc», но не в состоянии вызвать контроллер
  2. На стартовой странице добавлен метод service.AddMvc и в разделе конфигурации это app.useMvc()
  3. Я не могу маршрутизировать и не могу понять, в чем проблема

Код контроллера здесь и есть маршрут: метод действия Get с параметром start из DateTime тип

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<CurrencyContext>(cfg => {
                  cfg.UseSqlServer(_config.GetConnectionString("BitCoinIndexConnectionString"));
    });

    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseStaticFiles();
    app.UseNodeModules(env);

    app.UseMvc(routes =>
                      {             
                          routes.MapRoute(name: "default",
                                          template: "api/{controller}/{action}/{start:DateTime}",
                                          defaults: new { 
                                                            controller = "Currency", 
                                                            action = "Get", 
                                                            start = DateTime.Now.AddDays(-14)});                          
                                                        });
                      }
}

[Route("api/[Controller]")]
public class CurrencyController : Controller
{
    private BitCoinRepository<BitCoinIndex> _repository;

    public CurrencyController(BitCoinRepository<BitCoinIndex> repository)
    {
        _repository = repository;
    }

    // GET: api/<controller>
    [HttpGet("{start}",Name ="Get")]
    public IActionResult Get(DateTime start)
    {
        // var bci =  _repository.GetByDates(start).ToDictionary(t => t.Date.ToString(), t => t.Rate);
        return View();    
    }
}

1 Ответ

0 голосов
/ 25 января 2020

Я столкнулся с той же проблемой и решил ее, используя атрибут маршрутизации. Это то, что я сделал. Если вы не используете. Net Core 3, игнорируйте точку 1.

1-й отключите маршрутизацию конечной точки, добавив это в ConfigureServices:

services.AddMvc(options => options.EnableEndpointRouting = false);

Теперь вы можете использовать это в Configure method

app.UseMvc();

Далее просто определите ваши маршруты внутри контроллера (имейте в виду, что я обычно предпочитаю маршрутизацию, добавляя маршруты в таблицу маршрутизации, но столкнулся с ненужными проблемами, связанными с этим 'маршрутом', атрибутом маршрутизации был самый простой «маршрут», по которому можно было пройти)

...