我有一个基于 WCF REST 服务模板 40(CS) 的 WCF REST 4.0 项目。我想公开没有尾部斜杠的简单服务端点 URL。例如:
- 汽车服务.cs
- http://www.domain.com/cars - GET 返回所有汽车的列表
- http://www.domain.com/cars/123 - GET 返回一辆 ID 为 123 的汽车
- 卡车服务.cs
- http://www.domain.com/trucks - GET 返回所有卡车的列表
- http://www.domain.com/trucks/456 - GET 返回一辆 ID 为 456 的卡车
我将上述 URL 视为资源请求(而不是目录),这就是为什么我认为尾部斜杠在这里不合适。
不幸的是,我似乎无法获得我想要的行为,因为我总是被重定向到 /cars/ 和 /trucks/并带有斜杠。
以下是我定义“汽车”路线和服务方法的方式 - 请注意,我没有在任何路线或 URI 模板定义中包含任何斜杠:
// Global.asax.cs
RouteTable.Routes.Add(new ServiceRoute("cars", new WebServiceHostFactory(), typeof(CarService)));
// CarService.cs
[WebGet(UriTemplate = "")]
public List<Car> GetCollection()
{
return DataContext.GetAllCars();
}
请注意,MVC 不能以这种方式工作。使用 MapRoute 方法,我可以将请求直接路由到http://www.domain.com/about,而无需重定向到 /about/。如何在 WCF REST 4.0 中获得相同的行为?