问题:
尝试使用包含特殊字符的 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中文网其他相关文章!