Peut être utilisé dans les périodes de Asp.Net l'Api Web de Routes?

Je suis en train de travailler sur le déplacement d'un projet d'API à partir de matières de gestionnaires http là où je suis en utilisant des périodes dans les chemins:

http://server/collection/id.format

Je voudrais suivre le même schéma d'URL dans un site Web Api (auto-hébergé) version, et j'ai essayé ceci:

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

Malheureusement, ça ne semble pas résoudre (ce qui est conforme 404 sur /foo /foo/bar et /foo/bar.txt). Un schéma similaire à l'aide d'une barre oblique avant "format" fonctionne très bien:

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

Je n'ai pas encore fouillé dans le code de l'Api Web, et avant que je ne pensais que je voudrais poser ici pour voir si cela est connu, ou peut-être même justifie la limitation de l'Api Web.

Mise à JOUR: j'ai négligé de mentionner que la "id" et "format" sont des chaînes de caractères, ce qui s'avère important pour la solution à cette question. L'ajout d'une contrainte d'exclure les périodes de la "id" jeton résout le 404 problème.

  • Face à une très même problème moi-même: stackoverflow.com/questions/11487181/... | aussi loin Que je peux dire, un point ne peut pas être utilisé dans une URL. J'espère que je suis tort cependant.
  • Avez-vous essayé d'hériter de Controller et remplacer tout ce qui vient à travers la Initialize?
InformationsquelleAutor Lee | 2012-07-15