宁静的Web服务路由

时间:2011-08-31 15:30:05

标签: c# wcf rest .net-4.0

我正在开发.net 4.0 wcf restful服务项目。作为项目的一部分,我创建了两个服务1)OrderService 2)ProductService

此时我已在Global.asax中配置它们,如下所示:

RouteTable.Routes.Add(new ServiceRoute("products", new WebServiceHostFactory(),
                                                   typeof (ProductService)));
RouteTable.Routes.Add(new ServiceRoute("orders", new WebServiceHostFactory(),
                                                   typeof (OrderService)));

我可以使用以下网址访问这些服务:

    http://localhost/orders/123
    http://localhost/products/456

但我的要求是我必须能够使用以下格式的网址以特定顺序访问特定产品:

   http://localhost/orders/{orderId}/products/{productId}

任何人都可以建议我应该使用哪种路由来使两种不同的服务协同工作。

更新:ProductService中有方法接受两个参数

  1. orderId和

  2. 的productId

    返回所需产品

1 个答案:

答案 0 :(得分:0)

在您的OrderService(和相关服务合同)公开操作中使用正确的UriTemplate

public class OrderService : IOrderService
{
    [WebGet(UriTemplate = "{orderId}/products/{productId}")]
    public Product GetOrderProduct(int orderId, int productId)
    {
        ...
    }

}

如果必须可以orders路由到OrderService,则无法在ProductService中使用。