Точка "." в MVC Web API 2 для запроса, такого как api / people / STAFF.45287
URL, который я пытаюсь разрешить работать, один в стиле:http://somedomain.com/api/people/staff.33311 (например, сайты, как LAST.FM, разрешают всевозможные знаки в их URL RESTFul и WebPage, например "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/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx но это все равно не сработает .. Я также думаю, что это довольно утомительно, и мне интересно, нет ли другого, лучшего и более безопасного способа.
У нас есть внутренний идентификатор, подобный этому, поэтому нам нужно найти решение, которое бы так или иначе соответствовало точке, предпочтительно в стиле "." но я открыт для альтернативных предложений для URL в случае необходимости ...