WCF WebApi如何将请求URI映射到适当的服务类型/操作?

WCF WebApi如何将请求URI映射到适当的服务类型/操作?,wcf,wcf-rest,wcf-web-api,Wcf,Wcf Rest,Wcf Web Api,WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点 在WCF WebApi预览4的上下文中: 在自定义委派通道中,我希望根据传入的HttpRequestMessage.RequestUri查找关联的路由前缀或服务类型 那么比如说, RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config); RouteTable.Routes.MapServiceRoute

WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点

在WCF WebApi预览4的上下文中: 在自定义委派通道中,我希望根据传入的HttpRequestMessage.RequestUri查找关联的路由前缀或服务类型

那么比如说,

RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config);
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config);
RouteTable.Routes.MapServiceRoute(“员工/经理”,配置);
RouteTable.Routes.MapServiceRoute(“员工”,配置);
比如说有个请求进来了

  • WCF如何将其映射到正确的端点
  • ResourceFactoryProvider
    被实例化时,它已经知道了具体的服务类型。我似乎无法跟踪Uri和路由表路由之间的解析发生在哪里


    非常感谢。

    通过使用
    MapServiceRoute
    ,代码实际上是在ASP.NET路由表中注册了一个
    ServiceHostFactory
    。因此,首先,请求到达ASP.NET,并将其定向到服务EmployeesResource(这是URL可以映射到的唯一路径)。此时,WCF Web API服务主机(
    HttpConfigurableServiceHost
    )将使用
    UriTemplateTable
    将请求分派到相应的操作:如果您有类似以下代码的内容,则将调用该操作:

    [WebGet(UriTemplate = "/{employeeName}")]
    public Employee Get(string employeeName);
    

    我真的很感谢你的回答。我不敢相信关于WCF服务路由的内部信息是多么的少。虽然我主要感兴趣的是映射代码存在于何处,它根据请求uri确定服务类型?ASP.NET或WCF如何确定EmployeesResource是要实例化的正确路由/服务-“将其定向到服务EmployeesResource(这是URL可以映射到的唯一路径)”我似乎无法跟踪调用堆栈并找到它。再次感谢!