問題:
嘗試使用包含特殊字元的URL 存取資源,例如路徑段中的點(`.') 會導致「HTTP 錯誤404.0 - 找不到」錯誤。
設定:
問題中提供的範例控制器和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 } ); }
解決方案:
至路徑段中允許存在特殊字符,例如點,將WebApiConfig路由修改為如下所示:
config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}/{*path}", defaults: new { id = RouteParameter.Optional, path = RouteParameter.Optional } );
此路由範本新增了一個名為{*path}的包羅萬象的路由參數,用於捕獲任何剩餘的路徑段,包括點等特殊字元。
範例:
http://somedomain.com/api/people/staff.33311/
透過在URL 末尾附加斜線(/),可以將請求路由到處理路徑段的控制器操作,在本例中為staff.33311.
以上是如何在 ASP.NET Web API 2 路由中處理帶有特殊字元的 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!