Với api đường web mặc địnhWebAPI tuyến đường 404 khi có một không gian dấu trong URL
config.Routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new
{
id = RouteParameter.Optional
}
);
và một bộ điều khiển
public class TestController : ApiController
{
[HttpGet]
public HttpResponseMessage Get(string id)
{
return Request.CreateResponse(HttpStatusCode.OK, id);
}
}
Một yêu cầu 'api/test/1'
lợi nhuận 1
Nếu vì lý do nào đó, bạn gửi yêu cầu đến 'api/test/1%20'
tuyến 404.
Bây giờ ví dụ này có vẻ ngớ ngẩn kể từ khi trình duyệt cắt dấu không gian, nhưng
cho một tuyến đường như 'api/{controller}/{id}/{extrastuff}'
không gian trong '1 '
sẽ chuyển sang '1%20'
và yêu cầu sẽ 404 trên tuyến đường không được tìm thấy.
có vẻ ngớ ngẩn rằng một động cơ MVC định tuyến sẽ được đặt thành false theo mặc định khi một lợi thế lớn của mvc là không có url liên quan đến hệ thống tệp. – Steve
Nó không phải là công cụ định tuyến quyết định, đó là ASP.NET ở cốt lõi bảo vệ mọi thứ được xây dựng trên đầu trang của nó. Vì vậy, hãy cẩn thận nếu bạn thay đổi điều này mà bạn đang thư giãn các quy tắc cho tất cả mọi thứ theo ứng dụng của bạn tại thời điểm đó. –
Điều này chỉ làm hỏng ứng dụng ngay sau khi tôi thêm nó – Dan