Данная маршрутизация атрибутов в ядре ASP.Net (но я думаю, что MVC и WebAPI работают одинаково), я хочу иметь возможность делать что-то вроде этого:Как получить суффикс из url в качестве параметра действия при выполнении маршрутизации атрибутов в ASP.NET
[Route("api/[controller]")]
public class SampleController : Controller {
// GET api/sample/123e4567-e89b-12d3-a456-426655440000/folder/subfolder/file.css
[HttpGet("{id}")] // this is wrong, how should it be written correctly?
public string Get(Guid id, string urlSuffix) {
return null; // return stuff based on the id and the full url
}
}
в URL взятой в качестве примера в комментарии (api/sample/123e4567-e89b-12d3-a456-426655440000/folder/subfolder/file.css
) метод SampleController.Get
должен быть вызван со следующими параметрами:
- ID:
123e4567-e89b-12d3-a456-426655440000
- urlSu ffix:
folder/subfolder/file.css
или/folder/subfolder/file.css
(я на самом деле не заботиться о ведущей/
)
Если есть дополнительные параметры запроса, они должны быть включены в суффикс, а также.
Я думал об использовании необработанного URL-адреса запроса, но мне все-таки нужен способ указать действие, которое выполняется, и что когда-либо я думал, было слишком поздно, ASP.Net уже выяснил, что нет URL для данного действия.
Я хотел бы использовать контроллеры для этого вместо добавления некоторого «необработанного» кода в конвейер выполнения ядра ASP.Net.
Update:
Этот точный пример не работает для меня с основным ядром asp.net Dotnet и пустельга службы:
[Route("api/[controller]")]
public class SampleController : Controller
{
// GET api/values/5
[HttpGet("{id}/{urlSuffix}")]
public object Get(string id, string urlSuffix)
{
return new {id, urlSuffix};
}
}
Когда я называю http://localhost:5000/api/sample/some-id/folder
я получаю правильный результат, но когда я звоню http://localhost:5000/api/sample/some-id/folder/subfolder/file.extension
Я получаю ошибку 404.
Ну, это проблема, это не работает для меня. Я пытался изменить много вещей, но я не мог заставить ваш пример работать - см. Мой обновленный вопрос. – peter
Это расширение файла, которое вызывает проблему. – Nkosi
Нет, это не так, если я пропущу расширение файла, я получаю ту же ошибку, что и '/', вызывающие его, и для которого я не знаю, как определить шаблон url, чтобы он смотрел только на префикс – peter