URL-адреса, яку я намагаюся дозволити працювати, є такою у стилі: http://somedomain.com/api/people/staff.33311 (так само, як сайти як LAST.FM дозволяють усілякі знаки у своїх RESTFul & WebPage URL-адресах , наприклад, " http://www.last.fm/artist/psy'aviah " є дійсною URL-адресою для LAST.FM).
Що працює за наступними сценаріями: - http://somedomain.com/api/people/ - який повертає всіх людей - http://somedomain.com/api/people/staff33311 - також працював би, але це не те, що я ' м після того, як я хочу, щоб URL прийняв "крапку", як, наприклад, приклад нижче - http://somedomain.com/api/people/staff.33311 - але це дає мені
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Я створив такі речі:
Контролер "PeopleController"
public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person = _people.FirstOrDefault(p => p.Id.ToLower().Equals(id.ToLower())); if (person == null) return NotFound(); return Ok(person); }
WebApiConfig.cs
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
Я вже спробував дотримуватися всіх порад цього блогу http://www.hanselman.com/blog/ExperimentInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx, але він все ще не буде працювати .. Я також думаю, що це досить втомливо, і мені цікаво, чи немає іншого, кращий і безпечніший спосіб.
У нас внутрішній такий, як це, тому нам доведеться знайти рішення, щоб вписати крапку в той чи інший спосіб, бажано в стилі "." але я відкритий до альтернативних пропозицій для URL-адрес, якщо це потрібно ...