Können Punkte in Asp.Net-Web-API-Routen verwendet werden?

Ich arbeite daran, ein API-Projekt von unformatierten http-Handlern zu verschieben, bei denen ich Punkte in den Pfaden verwende:

http://server/collection/id.format

Ich möchte dasselbe URL-Schema in einer Web-API-Version (selbst gehostet) verwenden und habe Folgendes versucht:

var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
    name: "DefaultApiRoute",
    routeTemplate: "{controller}/{id}.{format}",
    defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
    constraints: null
);

Leider scheint sich das nicht zu beheben (konsistente 404-Werte in / foo, / foo / bar und /foo/bar.txt). Ein ähnliches Muster mit einem Schrägstrich vor 'format' funktioniert einwandfrei:

var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
    name: "DefaultApiRoute",
    routeTemplate: "{controller}/{id}/{format}",
    defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
    constraints: null
);

Ich habe mich noch nicht mit dem Code für die Web-API befasst, und bevor ich darüber nachdachte, würde ich hier nachfragen, ob dies eine bekannte oder vielleicht sogar gerechtfertigte Einschränkung in der Web-API ist.

UPDATE: Ich habe es versäumt zu erwähnen, dass "id" und "format" Zeichenfolgen sind, was sich als wichtig für die Lösung dieser Frage herausstellt. Das Hinzufügen einer Einschränkung zum Ausschließen von Punkten aus dem Token "id" löst das 404-Problem.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage