Problem:
Versuch, über URLs mit Sonderzeichen auf Ressourcen zuzugreifen, z. B Punkte (`.') im Pfadsegment führen zu einem „HTTP-Fehler 404.0 – Nicht gefunden“ Fehler.
Konfiguration:
Der in der Frage bereitgestellte Beispielcontroller und WebApiConfig:
// PeopleController.cs public class PeopleController : ApiController { // ... } // WebApiConfig.cs public static void Register(HttpConfiguration config) { // ... config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
Lösung:
An Erlauben Sie Sonderzeichen im Pfadsegment, z. B. Punkte, und ändern Sie die WebApiConfig-Route als folgt:
config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}/{*path}", defaults: new { id = RouteParameter.Optional, path = RouteParameter.Optional } );
Diese Routenvorlage fügt einen Catch-All-Routenparameter namens {*path} hinzu, der alle verbleibenden Pfadsegmente erfasst, einschließlich Sonderzeichen wie Punkte.
Beispiel:
http://somedomain.com/api/people/staff.33311/
Durch Anhängen eines Schrägstrichs (/) an das Ende der URL kann die Anfrage an die Controller-Aktion weitergeleitet werden behandelt das Pfadsegment, in diesem Fall staff.33311.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit URLs mit Sonderzeichen im ASP.NET Web API 2-Routing um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!