Не удается получить маршрут сервера aspnet.core для загрузки с использованием пути по умолчанию при использовании Angular - PullRequest
0 голосов
/ 24 мая 2018

Я хочу, чтобы все вызовы, которые не перехватывались какими-либо серверными маршрутами, загружали мой спаТаким образом, в моем файле startup.cs есть следующее

// routes
app.UseMvc(routes =>
{
    // default goes to Home, and angular will deal with client side routing     
    routes.MapRoute(
        name: "default",
        template: "{*url}",
        defaults: new { controller = "home", action = "index" });
});

. У меня есть страница сервера, которую я хочу загрузить, не добавляя в путь слово «index», поэтому она должна загрузить представление индекса, когдаЯ иду на http://localhost:5000/serverRoute, но он всегда пытается загрузить мой спа.Однако если я изменю URL-адрес на http://localhost:5000/serverRoute/index, то страница сервера загрузится.

Мой основной контроллер ASP.net выглядит так

[Route("[controller]/[action]")]
[ApiExplorerSettings(IgnoreApi = true)]
public class ServerRouteController : Controller
{
    /// <summary>
    /// Load default index view
    /// </summary>
    /// <returns></returns>
    public ViewResult Index()
    {
        return View();
    }
}

Что я делаю не так?

1 Ответ

0 голосов
/ 24 мая 2018

Маркер действия контроллера в шаблоне маршрута не является обязательным, поэтому он не совпадает, если отсутствует в URL.

[Route("[controller]")]
[ApiExplorerSettings(IgnoreApi = true)]
public class ServerRouteController : Controller {
    /// <summary>
    /// Load default index view
    /// </summary>
    /// <returns></returns>
    [Route("")]         //Match /ServerRoute
    [Route("[action]")] //Match /ServerRoute/Index
    public IActionResult Index() {
        return View();
    }
}

Ссылка Маршрутизация к действиям контроллера в ASP.NETядро

...