Punkt '.' in MVC Web API 2 für Anforderungen wie api / people / STAFF.45287

Die URL, die ich arbeiten lassen möchte, hat folgenden Stil:http://somedomain.com/api/people/staff.33311 (Genau wie Sites wie LAST.FM erlauben sie alle Arten von Zeichen in ihren RESTFul & WebPage-URLs, zum Beispiel "http://www.last.fm/artist/psy'aviah"ist eine gültige URL für LAST.FM).

Was funktioniert, sind folgende Szenarien: -http://somedomain.com/api/people/ - was alle Menschen zurückgibt -http://somedomain.com/api/people/staff33311 - würde auch funktionieren, aber es ist nicht das, wonach ich gesucht habe. Ich möchte, dass die URL einen "Punkt" akzeptiert, wie im folgenden Beispiel. -http://somedomain.com/api/people/staff.33311 - aber das gibt mir eine

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Ich habe folgende Dinge eingerichtet:

Der Controller "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);
}    

Die 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 }
    );
}

Ich habe bereits versucht, allen Tipps dieses Blogposts zu folgenhttp://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx aber es wird immer noch nicht funktionieren. Ich finde es auch ziemlich langweilig und ich frage mich, ob es keinen anderen, besseren und sichereren Weg gibt.

Wir haben unsere IDs intern so, also müssen wir eine Lösung finden, um den Punkt auf die eine oder andere Weise anzupassen, vorzugsweise im Stil von "." aber ich bin offen für alternative vorschläge für urls wenn nötig ...

Antworten auf die Frage(8)

Ihre Antwort auf die Frage