Атрибут пути WebAPI Regex выдает ошибку «Не удалось найти значение замены для токена» - PullRequest
0 голосов
/ 17 марта 2020

В моем коде. NEt Core 3 Я определил маршрут WebAPI, используя следующий параметр:

[HttpGet("ViewerRoles/{searchString:regex(^\\d+-(?<=-)[\\w ]*$)}")]
public async Task<ViewerRole> GetViewSettings(string searchString) {
    // ....
}

Это выдает мне следующую ошибку при запуске службы:

Ошибка: при обработке шаблона 'api / [controller] / ViewerRoles / {searchString: regex (^ \ d + - (? <= -) [\ w] * $)}', значение замены для токена '\ w ' невозможно найти. Доступные токены: «действие, контроллер». Чтобы использовать '[' или ']' в качестве литеральной строки на маршруте или в пределах ограничения, используйте вместо этого '[[' или ']]'. "</p>

Я в замешательстве. Кажется, что Regex верен и работает в различных онлайн-тестерах, но почему тогда он выдает ошибку?

1 Ответ

0 голосов
/ 17 марта 2020

Я уже нашел ответ, когда просматривал его. Проблемная часть c составляет [\\w ]. Вы должны использовать двойные квадратные скобки. В противном случае компилятор интерпретирует его как заполнитель.

[HttpGet("ViewerRoles/{searchString:regex(^\\d+-(?<=-)[[\\w ]]*$)}")]
public async Task<ViewerRole> GetViewSettings(string searchString) {
    // ....
}
...