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

标签 wcf wcf-rest wcf-web-api

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

在 WCF WebApi Preview 4 的上下文中: 在自定义委托(delegate) channel 内,我想根据传入的 HttpRequestMessage.RequestUri 查找关联的路由前缀或服务类型。

例如,

RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config);
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config);

假设收到 http://server/employees/John 的请求

  1. WCF 如何将其映射到正确的端点?

ResourceFactoryProvider实例化时,它已经知 Prop 体的服务类型。我似乎无法追踪 Uri 和路由表路由之间的解析发生在哪里。

提前非常感谢。

最佳答案

通过使用MapServiceRoute<TService> ,代码实际上是注册一个ServiceHostFactory在 ASP.NET 路由表中。因此,首先,请求到达 ASP.NET,然后将其定向到员工资源服务(这是 URL 可以映射到的唯一路由)。此时,WCF Web API 服务主机 ( HttpConfigurableServiceHost ) 将使用 UriTemplateTable将请求分派(dispatch)到适当的操作:如果您有类似下面的代码的内容,则这就是将被调用的操作:

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

关于wcf - WCF WebApi 如何将请求 URI 映射到适当的服务类型/操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446480/

相关文章:

c# - 如何模拟 OperationContext.Current(WCF 消息)

c# - 在 Visual Studio 中使用 Windows 身份验证服务进行客户端开发

.net - WPF 应用程序中的 WCF 命名管道

wcf - 如何在 WCF REST 中调整默认的 JSON 序列化程序

wcf - 如何将WCF异常传达给WebClient

wcf - 在 WCF Web 编程模型中,如何编写具有一组查询字符串参数(即具有相同名称)的操作协定?

java - 连接到 .NET REST 端点的 Android 中的对等错误间歇性连接重置

c# - 使用 POST 方法上传 JSON 对象时抛出 Bad Request Exception

c# - DELETE 方法 .NET WebAPI 不起作用