0

Я использую атрибут маршрутизации, чтобы попытаться отправить строку через url на мой веб-сайт Api. У меня есть маршрут определяется какИспользование '.' в Web Api, используя Attribute Routing, дает ошибку 404

[Route("Search/{searchText}")] 

Я ожидаю значение строки как SearchText. Кажется, что он работает нормально, но я получаю сообщение об ошибке, если есть. в моем параметре. Для примера.

http://localhost/api/Person/Search/me is working fine, 

но

http://localhost/api/Person/Search/me.me 

бросает ошибку 404 в моем браузере.

«.» Характер ir работает нормально, используя обычную маршрутизацию

http://localhost/api/Person?q=me.me 

Я получаю сообщение об ошибке только в случае маршрутизации атрибутов. Я читал эту статью о маршрутизации атрибутов для всех ссылок - http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2.
Как использовать маршрутизацию атрибутов для отправки '.' символ как часть строки?

ответ

1

Попробуйте добавить следующую строку в ваш Web.config в разделе: <system.WebServer><handlers>...</handlers></system.WebServer>

<add name="ApiURIs-ISAPI-Integrated-4.0" path="/Search/*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" preCondition="integratedMode,runtimeVersionv4.0" />

Thread Я использовал для решения этой же задачи: [1]: Dots in URL causes 404 with ASP.NET mvc and IIS

Edit: Если вам нужно Чтобы сделать это для нескольких маршрутов, вам, вероятно, придется сделать /*/* для пути.

+0

Большое спасибо за указатель, он решил проблему. –